<?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>140836</bug_id>
          
          <creation_ts>2015-01-23 13:46:41 -0800</creation_ts>
          <short_desc>Web Inspector: BasicBlockAnnotator and TypeTokenAnnotator shouldn&apos;t indefinitely ping for new information</short_desc>
          <delta_ts>2026-01-12 09:01:17 -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</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>141927</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jonowells</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1063762</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-23 13:46:41 -0800</bug_when>
    <thetext>Currently, once the type profiler starts asking for type information, it never stops until we stop viewing a JS file or encounter an error. 
We should make the annotators smarter at pinging for information only when we know that the information could have changed.

I think a good way to approach this would be to send an inspector event when JS code executes after not executing. As Brian pointed out, on
a run loop tick where JS executes. I think another good metric would be to send an event when we clear the type profiler log.

Anybody have ideas on an effective way of accomplishing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063763</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-01-23 13:48:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/19583678&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067274</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-05 18:03:16 -0800</bug_when>
    <thetext>I think this is the current plan:

Use events to drive UI updates.

What would trigger an event:

1. JSC::TypeProfilerLog being cleared. 
- This happens on GC and when the log fills up

2. Some timer in the inspector goes off and JSC::TypeProfilerLog has data in it
- This is to prevent situations where data is sitting in the log waiting to be processed, but no GC occurs and the log doesn&apos;t fill up.

3. JSC::ControlFlowProfiler will now incorporate a dirty bit. When we emit code for op_profile_control_flow, we can write to this dirty bit indicating that some code has executed. We can then have a timer in the inspector that checks for this dirty bit and issues events to signal when there is new data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071128</commentid>
    <comment_count>3</comment_count>
      <attachid>247098</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-22 22:26:57 -0800</bug_when>
    <thetext>Created attachment 247098
work in progress

it begins!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071153</commentid>
    <comment_count>4</comment_count>
      <attachid>247104</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-23 00:16:35 -0800</bug_when>
    <thetext>Created attachment 247104
work in progress

events are actually being called now when the TypeProfilerLog clears its
entries. TypeProfilerLog will need to be changed to support multiple
listeners for this call back in case there is more than one inspector
inspecting the VM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073048</commentid>
    <comment_count>5</comment_count>
      <attachid>247604</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-28 11:04:56 -0800</bug_when>
    <thetext>Created attachment 247604
work in progress

Just want to upload work here so I can clear off local branch until
we get timers into JSC.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247098</attachid>
            <date>2015-02-22 22:26:57 -0800</date>
            <delta_ts>2015-02-23 00:16:35 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17441</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAkocmV2aXNpb24gMTgwMzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMjEgQEAgc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOgogICAgICAgICAucmVsZWFzZSgpOwogfQogCit2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQoreworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBSdW50aW1lQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25u
ZWN0UmVhc29uIHJlYXNvbikKK3sKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7
CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOworCisgICAgaWYgKHJlYXNvbiAhPSBE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9pc1R5cGVQcm9m
aWxpbmdFbmFibGVkKQorICAgICAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUoZmFsc2Up
OworfQorCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9y
UmFuZ2U+JiByYW5nZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxWTSgpOwpAQCAtMjk2LDEyICsz
MTEsNiBAQCBzdGF0aWMgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc0ZvclR5CiAgICAgfQog
fQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCi17Ci0gICAgaWYgKHJlYXNvbiAhPSBEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9pc1R5cGVQcm9maWxp
bmdFbmFibGVkKQotICAgICAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUoZmFsc2UpOwot
fQotCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZW5hYmxlVHlwZVByb2ZpbGVyKEVycm9y
U3RyaW5nJikKIHsKICAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUodHJ1ZSk7CkBAIC0z
NDQsOCArMzUzLDEyIEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRCYXNpY0Jsb2MK
ICAgICBib29sIG9rYXk7CiAgICAgaW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2VJREFzU3RyaW5n
LnRvSW50UHRyU3RyaWN0KCZva2F5KTsKICAgICBBU1NFUlQob2theSk7Ci0gICAgY29uc3QgVmVj
dG9yPEJhc2ljQmxvY2tSYW5nZT4mIGJhc2ljQmxvY2tSYW5nZXMgPSB2bS5jb250cm9sRmxvd1By
b2ZpbGVyKCktPmdldEJhc2ljQmxvY2tzRm9yU291cmNlSUQoc291cmNlSUQsIHZtKTsKICAgICBi
YXNpY0Jsb2NrcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s+OjpjcmVhdGUoKTsKKyAgICBpZiAoIXZtLmNvbnRyb2xG
bG93UHJvZmlsZXIoKS0+aXNEaXJ0eSgpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
dm0uY29udHJvbEZsb3dQcm9maWxlcigpLT5jbGVhckRpcnR5RmxhZygpOworICAgIGNvbnN0IFZl
Y3RvcjxCYXNpY0Jsb2NrUmFuZ2U+JiBiYXNpY0Jsb2NrUmFuZ2VzID0gdm0uY29udHJvbEZsb3dQ
cm9maWxlcigpLT5nZXRCYXNpY0Jsb2Nrc0ZvclNvdXJjZUlEKHNvdXJjZUlELCB2bSk7CiAgICAg
Zm9yIChjb25zdCBCYXNpY0Jsb2NrUmFuZ2UmIGJsb2NrIDogYmFzaWNCbG9ja1Jhbmdlcykgewog
ICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4gbG9j
YXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrOjpjcmVhdGUo
KQogICAgICAgICAgICAgLnNldFN0YXJ0T2Zmc2V0KGJsb2NrLm1fc3RhcnRPZmZzZXQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklu
c3BlY3RvclJ1bnRpbWVBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KQEAg
LTg3LDYgKzg4LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsKIAorICAgIHN0ZDo6
dW5pcXVlX3B0cjxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKKyAgICBSZWZQdHI8UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOworCiBwcml2YXRlOgogICAgIHZvaWQgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGJv
b2wpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCShy
ZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIw
ICs0MCw2IEBAIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamUKIHsKIH0K
IAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKLX0KLQotdm9pZCBKU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNv
biByZWFzb24pCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwotICAgIG1f
YmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKLQotICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKLX0KLQogVk0mIEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50OjpnbG9iYWxWTSgpCiB7CiAgICAgcmV0dXJuIG1fZ2xvYmFsT2Jq
ZWN0LnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgJKHJl
dmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4
LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwgOgogcHVibGljOgog
ICAgIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpT
Qzo6SlNHbG9iYWxPYmplY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0KICAgICB2aXJ0dWFsIEpTQzo6Vk0mIGdsb2JhbFZNKCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2
YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7
CiAKQEAgLTUwLDggKzQ3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25z
b2xlKCkgb3ZlcnJpZGUgeyB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJ1bnRp
bWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxS
dW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSlNDOjpK
U0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgkocmV2
aXNpb24gMTgwMzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9SdW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsMTYgQEAKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImNvbnRleHQiLCAiJHJlZiI6ICJFeGVjdXRpb25Db250ZXh0
RGVzY3JpcHRpb24iLCAiZGVzY3JpcHRpb24iOiAiQSBuZXdseSBjcmVhdGVkIGV4ZWN1dGlvbiBj
b250ZXguIiB9CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklz
c3VlZCB3aGVuIG5ldyBleGVjdXRpb24gY29udGV4dCBpcyBjcmVhdGVkLiIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAibmV3VHlwZUluZm9ybWF0aW9uQXZhaWxh
YmxlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiSXNzdWVkIHdoZW4gbmV3IHR5cGUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLiIK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAibmV3QmFzaWNCbG9j
a0luZm9ybWF0aW9uQXZhaWxhYmxlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCisg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSXNzdWVkIHdoZW4gdGhlIGNvbnRyb2wgZmxvdyBw
cm9maWxlciBtYXkgaGF2ZSBuZXcgZGF0YS4iCiAgICAgICAgIH0KICAgICBdCiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEzNTksNiArMTM1OSwxMCBA
QCBfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIHN0b3JlYiAxLCBCYXNpY0Jsb2Nr
TG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QwXSwgdDAKKyAgICBsb2FkcCBWTTo6bV9jb250
cm9sRmxvd1Byb2ZpbGVyW3QwXSwgdDAKKyAgICBzdG9yZWIgMSwgQ29udHJvbEZsb3dQcm9maWxl
cjo6bV9kaXJ0eUZsYWdbdDBdCiAgICAgZGlzcGF0Y2goMikKIAogIyBMYXN0bHksIG1ha2Ugc3Vy
ZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29k
ZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jhc2lj
QmxvY2tMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDYgKzgzLDkgQEAgdm9pZCBCYXNpY0Jsb2NrTG9jYXRpb246OmVtaXRFeGVjdXRlQ29kZQogewog
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmbV9oYXNFeGVjdXRlZCks
IHB0clJlZyk7CiAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVl
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHB0clJlZywgMCkpOworCisgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC52bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCkt
PmRpcnR5RmxhZ1BvaW50ZXIoKSksIHB0clJlZyk7CisgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMih0cnVlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHB0clJlZywgMCkp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCShyZXZpc2lvbiAx
ODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2Zp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogQ29udHJvbEZsb3dQcm9maWxlcjo6Q29udHJvbEZsb3dQcm9maWxlcigpCiAgICAgOiBtX2R1
bW15QmFzaWNCbG9jayhCYXNpY0Jsb2NrTG9jYXRpb24oLTEsIC0xKSkKKyAgICAsIG1fZGlydHlG
bGFnKGZhbHNlKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b250cm9sRmxvd1Byb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5oCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDEzICs5OCwxOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPEJhc2ljQmxvY2tS
YW5nZT4gZ2V0QmFzaWNCbG9ja3NGb3JTb3VyY2VJRChpbnRwdHJfdCBzb3VyY2VJRCwgVk0mKSBj
b25zdDsKICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGR1bW15QmFzaWNCbG9jaygpIHsgcmV0dXJu
ICZtX2R1bW15QmFzaWNCbG9jazsgfQogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzQmFz
aWNCbG9ja0F0VGV4dE9mZnNldEJlZW5FeGVjdXRlZChpbnQsIGludHB0cl90LCBWTSYpOyAvLyBU
aGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3IgdGVzdGluZy4KKyAgICBib29sKiBkaXJ0eUZsYWdQb2lu
dGVyKCkgeyByZXR1cm4gJm1fZGlydHlGbGFnOyB9CisgICAgYm9vbCBpc0RpcnR5KCkgeyByZXR1
cm4gbV9kaXJ0eUZsYWc7IH0KKyAgICB2b2lkIGNsZWFyRGlydHlGbGFnKCkgeyBtX2RpcnR5Rmxh
ZyA9IGZhbHNlOyB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8QmFzaWNCbG9ja0tleSwgQmFzaWNCbG9ja0xv
Y2F0aW9uKj4gQmxvY2tMb2NhdGlvbkNhY2hlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJf
dCwgQmxvY2tMb2NhdGlvbkNhY2hlPiBTb3VyY2VJREJ1Y2tldHM7CiAKICAgICBTb3VyY2VJREJ1
Y2tldHMgbV9zb3VyY2VJREJ1Y2tldHM7CiAgICAgQmFzaWNCbG9ja0xvY2F0aW9uIG1fZHVtbXlC
YXNpY0Jsb2NrOworICAgIGJvb2wgbV9kaXJ0eUZsYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2Zp
bGVyTG9nLmNwcAkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTIgKzU0LDE2
IEBAIFR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZygpCiAKIHZvaWQgVHlwZVByb2Zp
bGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhTdHJpbmcgcmVhc29uKQogeworICAgIGlmIChpc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCAiJyIpOwogCiAgICAgZG91YmxlIGJlZm9y
ZSA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBMb2dFbnRyeSogZW50cnkgPSBtX2xvZ1N0YXJ0UHRy
OwogICAgIEhhc2hNYXA8U3RydWN0dXJlKiwgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4gc2VlblNo
YXBlczsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihlbnRyeSA8PSBtX2N1
cnJlbnRMb2dFbnRyeVB0cik7CiAgICAgd2hpbGUgKGVudHJ5ICE9IG1fY3VycmVudExvZ0VudHJ5
UHRyKSB7CiAgICAgICAgIFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVyZUlEOwogICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKQEAgLTkxLDYgKzk1LDkgQEAgdm9p
ZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKAogICAgICAgICBkb3VibGUgYWZ0
ZXIgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgICAgIGRhdGFMb2dGKCIgUHJvY2Vzc2luZyB0aGUg
bG9nIHRvb2s6ICclZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKICAgICB9CisKKyAgICBpZiAo
bV9sb2dDbGVhcmVkQ2FsbGJhY2spCisgICAgICAgIG1fbG9nQ2xlYXJlZENhbGxiYWNrKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVByb2ZpbGVyTG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJv
Y2Vzc0xvZ0VudHJpZXMoU3RyaW5nKTsKICAgICBMb2dFbnRyeSogbG9nRW5kUHRyKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2dFbmRQdHI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9PSBtX2xvZ1N0YXJ0UHRyOyB9CiAKICAgICBzdGF0aWMg
cHRyZGlmZl90IGxvZ1N0YXJ0T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVQ
cm9maWxlckxvZywgbV9sb2dTdGFydFB0cik7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGN1cnJl
bnRMb2dFbnRyeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihUeXBlUHJvZmlsZXJM
b2csIG1fY3VycmVudExvZ0VudHJ5UHRyKTsgfQpAQCAtNzgsNiArNzksOCBAQCBwcml2YXRlOgog
ICAgIExvZ0VudHJ5KiBtX2xvZ1N0YXJ0UHRyOwogICAgIExvZ0VudHJ5KiBtX2N1cnJlbnRMb2dF
bnRyeVB0cjsKICAgICBMb2dFbnRyeSogbV9sb2dFbmRQdHI7CisKKyAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gbV9sb2dDbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAJ
KHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMjEgKzU5LDEyIEBAIFBhZ2VSdW50aW1l
QWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5qZWMKIHsKIH0KIAotdm9pZCBQYWdlUnVudGltZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Ci19Ci0KIHZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51
bGxwdHI7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOworICAgIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKIAogICAg
IFN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwotCi0gICAgSW5zcGVjdG9yUnVu
dGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwogfQogCiB2
b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgJKHJldmlz
aW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAgcHVibGljOgogICAgIFBhZ2VSdW50
aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBQYWdlKiwgSW5zcGVj
dG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVBZ2VudCgpIHsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcmKSBvdmVycmlkZTsKQEAgLTc0LDggKzczLDYgQEAgcHJpdmF0ZToKIAogICAgIFBhZ2UqIG1f
aW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fbWFpbldvcmxkQ29u
dGV4dENyZWF0ZWQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50LmNwcAkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDE4ICs1Miw2IEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KEkKIHsK
IH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQotewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKLX0KLQotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCi17Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwotCi0gICAgSW5zcGVjdG9yUnVudGltZUFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwotfQotCiBJbmplY3RlZFNj
cmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmlu
ZyYgZXJyb3IsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVj
dXRpb25Db250ZXh0SWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJS
dW50aW1lQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyUnVudGltZUFnZW50LmgJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMs
NiBAQCBwdWJsaWM6CiAgICAgV29ya2VyUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgV29ya2VyR2xvYmFsU2NvcGUqKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJS
dW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0KICAg
ICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBh
dXNlV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKQEAgLTU2LDcgKzUzLDYg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRp
bWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fcGF1
c2VkOwogfTsKIApJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMJKHJldmlz
aW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw5IEBA
IFdlYkluc3BlY3Rvci5SdW50aW1lTWFuYWdlciA9IGZ1bmN0aW9uKCkKIH07CiAKIFdlYkluc3Bl
Y3Rvci5SdW50aW1lTWFuYWdlci5FdmVudCA9IHsKLSAgICBEaWRFdmFsdWF0ZTogInJ1bnRpbWUt
bWFuYWdlci1kaWQtZXZhbHVhdGUiCisgICAgRGlkRXZhbHVhdGU6IFN5bWJvbCgicnVudGltZS1t
YW5hZ2VyLWRpZC1ldmFsdWF0ZSIpLAorICAgIE5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZTog
U3ltYm9sKCJydW50aW1lLW1hbmFnZXItbmV3LXR5cGUtaW5mb3JtYXRpb24tYXZhaWxhYmxlIiks
CisgICAgTmV3QmFzaWNCbG9ja0luZm9ybWF0aW9uQXZhaWxhYmxlOiBTeW1ib2woInJ1bnRpbWUt
bWFuYWdlci1uZXctYmFzaWMtYmxvY2staW5mb3JtYXRpb24tYXZhaWxhYmxlIikKIH07CiAKIFdl
Ykluc3BlY3Rvci5SdW50aW1lTWFuYWdlci5wcm90b3R5cGUgPSB7CkBAIC05MSw2ICs5MywxNiBA
QCBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIucHJvdG90eXBlID0gCiAKICAgICAgICAgICAg
IGNhbGxiYWNrKG51bGwsIHByb3BlcnRpZXMpOwogICAgICAgICB9KTsKKyAgICB9LAorCisgICAg
bmV3VHlwZUluZm9ybWF0aW9uQXZhaWxhYmxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIu
RXZlbnQuTmV3VHlwZUluZm9ybWF0aW9uQXZhaWxhYmxlKTsKKyAgICB9LAorCisgICAgbmV3QmFz
aWNCbG9ja0luZm9ybWF0aW9uQXZhaWxhYmxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIu
RXZlbnQuTmV3QmFzaWNCbG9ja0luZm9ybWF0aW9uQXZhaWxhYmxlKTsKICAgICB9CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1l
T2JzZXJ2ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzCShyZXZpc2lvbiAxODAzNzcpCisrKyBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2
ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDE2IEBAIFdlYkluc3BlY3Rvci5SdW50
aW1lT2JzZXJ2ZXIucHJvdG90eXBlID0KICAgICBleGVjdXRpb25Db250ZXh0Q3JlYXRlZDogZnVu
Y3Rpb24oY29udGV4dFBheWxvYWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQoY29udGV4dFBheWxvYWQpOwor
ICAgIH0sCisKKyAgICBuZXdUeXBlSW5mb3JtYXRpb25BdmFpbGFibGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5ydW50aW1lTWFuYWdlci5uZXdUeXBlSW5mb3JtYXRp
b25BdmFpbGFibGUoKTsKKyAgICB9LAorCisgICAgbmV3QmFzaWNCbG9ja0luZm9ybWF0aW9uQXZh
aWxhYmxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IucnVudGltZU1h
bmFnZXIubmV3QmFzaWNCbG9ja0luZm9ybWF0aW9uQXZhaWxhYmxlKCk7CiAgICAgfQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247104</attachid>
            <date>2015-02-23 00:16:35 -0800</date>
            <delta_ts>2015-02-28 11:04:56 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>23584</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAkocmV2aXNpb24gMTgwMzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMjEgQEAgc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOgogICAgICAgICAucmVsZWFzZSgpOwogfQogCit2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQoreworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBSdW50aW1lQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25u
ZWN0UmVhc29uIHJlYXNvbikKK3sKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7
CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOworCisgICAgaWYgKHJlYXNvbiAhPSBE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9pc1R5cGVQcm9m
aWxpbmdFbmFibGVkKQorICAgICAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUoZmFsc2Up
OworfQorCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9y
UmFuZ2U+JiByYW5nZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxWTSgpOwpAQCAtMjgyLDEyICsy
OTcsMjAgQEAgcHVibGljOgogICAgIH0KIH07CiAKLXN0YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpT
RnVuY3Rpb25zRm9yVHlwZVByb2ZpbGluZyhWTSYgdm0sIGJvb2wgc2hvdWxkRW5hYmxlVHlwZVBy
b2ZpbGluZykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpyZWNvbXBpbGVBbGxKU0Z1bmN0
aW9uc0ZvclR5cGVQcm9maWxpbmcoVk0mIHZtLCBib29sIHNob3VsZEVuYWJsZVR5cGVQcm9maWxp
bmcpCiB7CiAgICAgYm9vbCBzaG91bGRSZWNvbXBpbGVGcm9tVHlwZVByb2ZpbGVyID0gKHNob3Vs
ZEVuYWJsZVR5cGVQcm9maWxpbmcgPyB2bS5lbmFibGVUeXBlUHJvZmlsZXIoKSA6IHZtLmRpc2Fi
bGVUeXBlUHJvZmlsZXIoKSk7CiAgICAgYm9vbCBzaG91bGRSZWNvbXBpbGVGcm9tQ29udHJvbEZs
b3dQcm9maWxlciA9IChzaG91bGRFbmFibGVUeXBlUHJvZmlsaW5nID8gdm0uZW5hYmxlQ29udHJv
bEZsb3dQcm9maWxlcigpIDogdm0uZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAgICAg
Ym9vbCBuZWVkc1RvUmVjb21waWxlID0gc2hvdWxkUmVjb21waWxlRnJvbVR5cGVQcm9maWxlciB8
fCBzaG91bGRSZWNvbXBpbGVGcm9tQ29udHJvbEZsb3dQcm9maWxlcjsKIAorICAgIGlmIChzaG91
bGRFbmFibGVUeXBlUHJvZmlsaW5nKSB7CisgICAgICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5z
ZXRMb2dDbGVhcmVkQ2FsbGJhY2soW3RoaXNdICgpIHsKKyAgICAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5uZXdUeXBlSW5mb3JtYXRpb25BdmFpbGFibGUoKTsKKyAgICAgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5uZXdCYXNpY0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFibGUoKTsK
KyAgICAgICAgfSk7CisgICAgfSBlbHNlIGlmICh2bS50eXBlUHJvZmlsZXJMb2coKSkKKyAgICAg
ICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnNldExvZ0NsZWFyZWRDYWxsYmFjayhudWxscHRyKTsK
KwogICAgIGlmIChuZWVkc1RvUmVjb21waWxlKSB7CiAgICAgICAgIHZtLnByZXBhcmVUb0Rpc2Nh
cmRDb2RlKCk7CiAgICAgICAgIFR5cGVSZWNvbXBpbGVyIHJlY29tcGlsZXI7CkBAIC0yOTYsMTIg
KzMxOSw2IEBAIHN0YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zRm9yVHkKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKLXsKLSAgICBpZiAocmVhc29uICE9IERp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCAmJiBtX2lzVHlwZVByb2Zp
bGluZ0VuYWJsZWQpCi0gICAgICAgIHNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZShmYWxzZSk7
Ci19Ci0KIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGVUeXBlUHJvZmlsZXIoRXJy
b3JTdHJpbmcmKQogewogICAgIHNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZSh0cnVlKTsKQEAg
LTMyNSw3ICszNDIsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0VHlwZVByb2Zp
CiAgICAgLy8gdXAgdGhyb3dpbmcgYXdheSBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUgc3RhY2su
CiAgICAgaWYgKHZtLmVudHJ5U2NvcGUpIHsKICAgICAgICAgdm0uZW50cnlTY29wZS0+c2V0RW50
cnlTY29wZURpZFBvcExpc3RlbmVyKHRoaXMsCi0gICAgICAgICAgICBbPV0gKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqKSB7CisgICAgICAgICAgICBbc2hvdWxkRW5hYmxlVHlwZVByb2ZpbGluZywg
dGhpc10gKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKSB7CiAgICAgICAgICAgICAgICAgcmVjb21w
aWxlQWxsSlNGdW5jdGlvbnNGb3JUeXBlUHJvZmlsaW5nKHZtLCBzaG91bGRFbmFibGVUeXBlUHJv
ZmlsaW5nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKQEAgLTM0NCw4ICszNjEsMTIgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvYwogICAgIGJvb2wgb2theTsK
ICAgICBpbnRwdHJfdCBzb3VyY2VJRCA9IHNvdXJjZUlEQXNTdHJpbmcudG9JbnRQdHJTdHJpY3Qo
Jm9rYXkpOwogICAgIEFTU0VSVChva2F5KTsKLSAgICBjb25zdCBWZWN0b3I8QmFzaWNCbG9ja1Jh
bmdlPiYgYmFzaWNCbG9ja1JhbmdlcyA9IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+Z2V0QmFz
aWNCbG9ja3NGb3JTb3VyY2VJRChzb3VyY2VJRCwgdm0pOwogICAgIGJhc2ljQmxvY2tzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFz
aWNCbG9jaz46OmNyZWF0ZSgpOworICAgIGlmICghdm0uY29udHJvbEZsb3dQcm9maWxlcigpLT5p
c0RpcnR5KCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2bS5jb250cm9sRmxvd1By
b2ZpbGVyKCktPmNsZWFyRGlydHlGbGFnKCk7CisgICAgY29uc3QgVmVjdG9yPEJhc2ljQmxvY2tS
YW5nZT4mIGJhc2ljQmxvY2tSYW5nZXMgPSB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJh
c2ljQmxvY2tzRm9yU291cmNlSUQoc291cmNlSUQsIHZtKTsKICAgICBmb3IgKGNvbnN0IEJhc2lj
QmxvY2tSYW5nZSYgYmxvY2sgOiBiYXNpY0Jsb2NrUmFuZ2VzKSB7CiAgICAgICAgIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPiBsb2NhdGlvbiA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s6OmNyZWF0ZSgpCiAgICAgICAgICAgICAu
c2V0U3RhcnRPZmZzZXQoYmxvY2subV9zdGFydE9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUnVudGltZUFn
ZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRl
IHsgbV9lbmFibGVkID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQpAQCAtODcsOCArODgsMTIgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW50
aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworCiBwcml2YXRl
OgogICAgIHZvaWQgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGJvb2wpOworICAgIHZvaWQg
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNGb3JUeXBlUHJvZmlsaW5nKEpTQzo6Vk0mICwgYm9vbCBz
aG91bGRFbmFibGVUeXBlUHJvZmlsaW5nKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciog
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0
RGVidWdTZXJ2ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDIwICs0MCw2IEBAIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamUK
IHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKLX0KLQotdm9pZCBKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVj
dFJlYXNvbiByZWFzb24pCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKLQotICAgIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKLX0KLQogVk0mIEpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpnbG9iYWxWTSgpCiB7CiAgICAgcmV0dXJuIG1fZ2xv
YmFsT2JqZWN0LnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
LmgJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDkgKzM4LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwgOgogcHVi
bGljOgogICAgIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdl
ciosIEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0KICAgICB2aXJ0dWFsIEpTQzo6Vk0mIGdsb2Jh
bFZNKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3Zl
cnJpZGU7CiAKQEAgLTUwLDggKzQ3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bm11
dGVDb25zb2xlKCkgb3ZlcnJpZGUgeyB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJl
ZlB0cjxSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNv
bgkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9SdW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsMTYgQEAK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRleHQiLCAiJHJlZiI6ICJFeGVjdXRpb25D
b250ZXh0RGVzY3JpcHRpb24iLCAiZGVzY3JpcHRpb24iOiAiQSBuZXdseSBjcmVhdGVkIGV4ZWN1
dGlvbiBjb250ZXguIiB9CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIklzc3VlZCB3aGVuIG5ldyBleGVjdXRpb24gY29udGV4dCBpcyBjcmVhdGVkLiIKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAibmV3VHlwZUluZm9ybWF0aW9u
QXZhaWxhYmxlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiSXNzdWVkIHdoZW4gbmV3IHR5cGUgaW5mb3JtYXRpb24gaXMgYXZhaWxh
YmxlLiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAibmV3QmFz
aWNCbG9ja0luZm9ybWF0aW9uQXZhaWxhYmxlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
W10sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSXNzdWVkIHdoZW4gdGhlIGNvbnRyb2wg
ZmxvdyBwcm9maWxlciBtYXkgaGF2ZSBuZXcgZGF0YS4iCiAgICAgICAgIH0KICAgICBdCiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEzNTksNiArMTM1
OSwxMCBAQCBfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIHN0b3JlYiAxLCBCYXNp
Y0Jsb2NrTG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QwXSwgdDAKKyAgICBsb2FkcCBWTTo6
bV9jb250cm9sRmxvd1Byb2ZpbGVyW3QwXSwgdDAKKyAgICBzdG9yZWIgMSwgQ29udHJvbEZsb3dQ
cm9maWxlcjo6bV9kaXJ0eUZsYWdbdDBdCiAgICAgZGlzcGF0Y2goMikKIAogIyBMYXN0bHksIG1h
a2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxs
IG9wY29kZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Jsb2Nr
TG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDkgQEAgdm9pZCBCYXNpY0Jsb2NrTG9jYXRpb246OmVtaXRFeGVjdXRlQ29k
ZQogewogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmbV9oYXNFeGVj
dXRlZCksIHB0clJlZyk7CiAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mih0cnVlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHB0clJlZywgMCkpOworCisgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC52bSgpLT5jb250cm9sRmxvd1Byb2Zp
bGVyKCktPmRpcnR5RmxhZ1BvaW50ZXIoKSksIHB0clJlZyk7CisgICAgaml0LnN0b3JlOChDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHB0clJl
ZywgMCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCShyZXZp
c2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxv
d1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogQ29udHJvbEZsb3dQcm9maWxlcjo6Q29udHJvbEZsb3dQcm9maWxlcigpCiAgICAg
OiBtX2R1bW15QmFzaWNCbG9jayhCYXNpY0Jsb2NrTG9jYXRpb24oLTEsIC0xKSkKKyAgICAsIG1f
ZGlydHlGbGFnKGZhbHNlKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5oCShyZXZpc2lvbiAxODAzNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk4LDEzICs5OCwxOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPEJhc2lj
QmxvY2tSYW5nZT4gZ2V0QmFzaWNCbG9ja3NGb3JTb3VyY2VJRChpbnRwdHJfdCBzb3VyY2VJRCwg
Vk0mKSBjb25zdDsKICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGR1bW15QmFzaWNCbG9jaygpIHsg
cmV0dXJuICZtX2R1bW15QmFzaWNCbG9jazsgfQogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzQmFzaWNCbG9ja0F0VGV4dE9mZnNldEJlZW5FeGVjdXRlZChpbnQsIGludHB0cl90LCBWTSYp
OyAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3IgdGVzdGluZy4KKyAgICBib29sKiBkaXJ0eUZs
YWdQb2ludGVyKCkgeyByZXR1cm4gJm1fZGlydHlGbGFnOyB9CisgICAgYm9vbCBpc0RpcnR5KCkg
eyByZXR1cm4gbV9kaXJ0eUZsYWc7IH0KKyAgICB2b2lkIGNsZWFyRGlydHlGbGFnKCkgeyBtX2Rp
cnR5RmxhZyA9IGZhbHNlOyB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8QmFzaWNCbG9ja0tleSwgQmFzaWNC
bG9ja0xvY2F0aW9uKj4gQmxvY2tMb2NhdGlvbkNhY2hlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxp
bnRwdHJfdCwgQmxvY2tMb2NhdGlvbkNhY2hlPiBTb3VyY2VJREJ1Y2tldHM7CiAKICAgICBTb3Vy
Y2VJREJ1Y2tldHMgbV9zb3VyY2VJREJ1Y2tldHM7CiAgICAgQmFzaWNCbG9ja0xvY2F0aW9uIG1f
ZHVtbXlCYXNpY0Jsb2NrOworICAgIGJvb2wgbV9kaXJ0eUZsYWc7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxl
ckxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyTG9nLmNwcAkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTIg
KzU0LDE2IEBAIFR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZygpCiAKIHZvaWQgVHlw
ZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhTdHJpbmcgcmVhc29uKQogeworICAgIGlm
IChpc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCAiJyIpOwogCiAgICAgZG91Ymxl
IGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBMb2dFbnRyeSogZW50cnkgPSBtX2xvZ1N0
YXJ0UHRyOwogICAgIEhhc2hNYXA8U3RydWN0dXJlKiwgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4g
c2VlblNoYXBlczsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihlbnRyeSA8
PSBtX2N1cnJlbnRMb2dFbnRyeVB0cik7CiAgICAgd2hpbGUgKGVudHJ5ICE9IG1fY3VycmVudExv
Z0VudHJ5UHRyKSB7CiAgICAgICAgIFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVyZUlE
OwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKQEAgLTkxLDYgKzk1LDkg
QEAgdm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKAogICAgICAgICBkb3Vi
bGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgICAgIGRhdGFMb2dGKCIgUHJvY2Vzc2lu
ZyB0aGUgbG9nIHRvb2s6ICclZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKICAgICB9CisKKyAg
ICBpZiAobV9sb2dDbGVhcmVkQ2FsbGJhY2spCisgICAgICAgIG1fbG9nQ2xlYXJlZENhbGxiYWNr
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgJKHJldmlzaW9uIDE4MDM3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHJvY2Vzc0xvZ0VudHJpZXMoU3RyaW5nKTsKICAgICBMb2dFbnRyeSogbG9nRW5kUHRyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dFbmRQdHI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9PSBtX2xvZ1N0YXJ0UHRyOyB9CisgICAgdm9p
ZCBzZXRMb2dDbGVhcmVkQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKSB7
IG1fbG9nQ2xlYXJlZENhbGxiYWNrID0gY2FsbGJhY2s7IH0KIAogICAgIHN0YXRpYyBwdHJkaWZm
X3QgbG9nU3RhcnRPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVHlwZVByb2ZpbGVy
TG9nLCBtX2xvZ1N0YXJ0UHRyKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgY3VycmVudExvZ0Vu
dHJ5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVQcm9maWxlckxvZywgbV9j
dXJyZW50TG9nRW50cnlQdHIpOyB9CkBAIC03OCw2ICs4MCw4IEBAIHByaXZhdGU6CiAgICAgTG9n
RW50cnkqIG1fbG9nU3RhcnRQdHI7CiAgICAgTG9nRW50cnkqIG1fY3VycmVudExvZ0VudHJ5UHRy
OwogICAgIExvZ0VudHJ5KiBtX2xvZ0VuZFB0cjsKKworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBtX2xvZ0NsZWFyZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAkocmV2aXNp
b24gMTgwMzc3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwyMSArNTksMTIgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6
UGFnZVJ1bnRpbWVBZ2VudChJbmplYwogewogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKLXsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKLX0KLQogdm9pZCBQYWdlUnVudGlt
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CisgICAgSW5zcGVjdG9yUnVudGltZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwogCiAgICAgU3RyaW5n
IHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7Ci0KLSAgICBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKIHZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAkocmV2aXNpb24gMTgw
Mzc3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgUGFnZVJ1bnRpbWVBZ2Vu
dChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFBhZ2UqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92
ZXJyaWRlOwpAQCAtNzQsOCArNzMsNiBAQCBwcml2YXRlOgogCiAgICAgUGFnZSogbV9pbnNwZWN0
ZWRQYWdlOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVu
ZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9tYWluV29ybGRDb250ZXh0Q3Jl
YXRlZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTggKzUy
LDYgQEAgV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSQogewogfQogCi12
b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCi17Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwotfQotCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKLXsKLSAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0KLSAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7Ci19Ci0KIEluamVjdGVkU2NyaXB0IFdv
cmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJv
ciwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNv
bnRleHRJZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuaAkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclJ1bnRpbWVBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw2IEBAIHB1
YmxpYzoKICAgICBXb3JrZXJSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBXb3JrZXJHbG9iYWxTY29wZSopOwogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRpbWVB
Z2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKLQogICAgIHZpcnR1
YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcGF1c2VXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwpAQCAtNTYsNyArNTMsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgV29ya2VyR2xvYmFsU2NvcGUq
IG1fd29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9wYXVzZWQ7CiB9
OwogCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Bbm5vdGF0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzCShyZXZpc2lvbiAxODAzNzcpCisrKyBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Bbm5vdGF0b3Iu
anMJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJJbnNwZWN0b3IuQW5ub3Rh
dG9yLnByb3RvdHlwZSA9IHsKIAogICAgIHBhdXNlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB0aGlzLl9jbGVhclRpbWVvdXRJZk5lZWRlZCgpOworICAgICAgICB0aGlzLmNsZWFyVGltZW91
dElmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7CiAgICAgfSwKIAog
ICAgIHJlc3VtZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fY2xlYXJUaW1lb3V0
SWZOZWVkZWQoKTsKKyAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRJZk5lZWRlZCgpOwogICAgICAg
ICB0aGlzLl9pc0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHRoaXMuaW5zZXJ0QW5ub3RhdGlvbnMo
KTsKICAgICB9LApAQCAtNzAsMTMgKzcwLDEzIEBAIFdlYkluc3BlY3Rvci5Bbm5vdGF0b3IucHJv
dG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX2lzQWN0aXZlKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIHRoaXMuX2NsZWFyVGltZW91dElmTmVlZGVkKCk7CisgICAgICAgIHRo
aXMuY2xlYXJUaW1lb3V0SWZOZWVkZWQoKTsKICAgICAgICAgdGhpcy5pbnNlcnRBbm5vdGF0aW9u
cygpOwogICAgIH0sCiAKICAgICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhp
cy5fY2xlYXJUaW1lb3V0SWZOZWVkZWQoKTsKKyAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRJZk5l
ZWRlZCgpOwogICAgICAgICB0aGlzLl9pc0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHRoaXMuY2xl
YXJBbm5vdGF0aW9ucygpOwogICAgICAgICB0aGlzLmluc2VydEFubm90YXRpb25zKCk7CkBAIC0x
MDAsOSArMTAwLDcgQEAgV2ViSW5zcGVjdG9yLkFubm90YXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAotICAgIC8vIFByaXZh
dGUKLQotICAgIF9jbGVhclRpbWVvdXRJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIGNsZWFyVGlt
ZW91dElmTmVlZGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdGltZW91
dElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0SWRl
bnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9CYXNpY0Jsb2NrQW5ub3RhdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Jhc2ljQmxvY2tBbm5vdGF0b3Iu
anMJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0Jhc2ljQmxvY2tBbm5vdGF0b3IuanMJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDggQEAgV2ViSW5zcGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0b3IgPSBmdW5jdAog
CiAgICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0OwogICAgIHRoaXMuX2Jhc2ljQmxvY2tNYXJrZXJz
ID0gbmV3IE1hcDsgLy8gT25seSBjb250YWlucyB1bmV4ZWN1dGVkIGJhc2ljIGJsb2Nrcy4KKwor
ICAgIFdlYkluc3BlY3Rvci5ydW50aW1lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5SdW50aW1lTWFuYWdlci5FdmVudC5OZXdCYXNpY0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFi
bGUsIHRoaXMuaW5zZXJ0QW5ub3RhdGlvbnMsIHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkJh
c2ljQmxvY2tBbm5vdGF0b3IuSGFzTm90RXhlY3V0ZWRDbGFzc05hbWUgPSAiYmFzaWMtYmxvY2st
aGFzLW5vdC1leGVjdXRlZCI7CkBAIC01MCw2ICs1Miw3IEBAIFdlYkluc3BlY3Rvci5CYXNpY0Js
b2NrQW5ub3RhdG9yLnByb3RvdHkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLmNsZWFyVGltZW91dElmTmVlZGVk
KCk7CiAgICAgICAgIHRoaXMuX2Fubm90YXRlQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcygpOwog
ICAgIH0sCiAKQEAgLTg3LDcgKzkwLDggQEAgV2ViSW5zcGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0
b3IucHJvdG90eQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgdG90YWxUaW1lID0g
RGF0ZS5ub3coKSAtIHN0YXJ0VGltZTsKLSAgICAgICAgICAgIHZhciB0aW1lb3V0VGltZSA9IE1h
dGgubWluKE1hdGgubWF4KDY1MDAsIHRvdGFsVGltZSksIDMwICogdG90YWxUaW1lKTsKKyAgICAg
ICAgICAgIC8vdmFyIHRpbWVvdXRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoNjUwMCwgdG90YWxU
aW1lKSwgMzAgKiB0b3RhbFRpbWUpOworICAgICAgICAgICAgdmFyIHRpbWVvdXRUaW1lID0gMTAw
MDA7CiAgICAgICAgICAgICB0aGlzLl90aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQodGhp
cy5pbnNlcnRBbm5vdGF0aW9ucy5iaW5kKHRoaXMpLCB0aW1lb3V0VGltZSk7CiAgICAgICAgIH0u
YmluZCh0aGlzKSk7CiAgICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2Vy
LmpzCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsOSBAQCBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIgPSBmdW5jdGlvbigpCiB9Owog
CiBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIuRXZlbnQgPSB7Ci0gICAgRGlkRXZhbHVhdGU6
ICJydW50aW1lLW1hbmFnZXItZGlkLWV2YWx1YXRlIgorICAgIERpZEV2YWx1YXRlOiBTeW1ib2wo
InJ1bnRpbWUtbWFuYWdlci1kaWQtZXZhbHVhdGUiKSwKKyAgICBOZXdUeXBlSW5mb3JtYXRpb25B
dmFpbGFibGU6IFN5bWJvbCgicnVudGltZS1tYW5hZ2VyLW5ldy10eXBlLWluZm9ybWF0aW9uLWF2
YWlsYWJsZSIpLAorICAgIE5ld0Jhc2ljQmxvY2tJbmZvcm1hdGlvbkF2YWlsYWJsZTogU3ltYm9s
KCJydW50aW1lLW1hbmFnZXItbmV3LWJhc2ljLWJsb2NrLWluZm9ybWF0aW9uLWF2YWlsYWJsZSIp
CiB9OwogCiBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIucHJvdG90eXBlID0gewpAQCAtOTEs
NiArOTMsMTYgQEAgV2ViSW5zcGVjdG9yLlJ1bnRpbWVNYW5hZ2VyLnByb3RvdHlwZSA9IAogCiAg
ICAgICAgICAgICBjYWxsYmFjayhudWxsLCBwcm9wZXJ0aWVzKTsKICAgICAgICAgfSk7CisgICAg
fSwKKworICAgIG5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJ1bnRp
bWVNYW5hZ2VyLkV2ZW50Lk5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZSk7CisgICAgfSwKKwor
ICAgIG5ld0Jhc2ljQmxvY2tJbmZvcm1hdGlvbkF2YWlsYWJsZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJ1bnRp
bWVNYW5hZ2VyLkV2ZW50Lk5ld0Jhc2ljQmxvY2tJbmZvcm1hdGlvbkF2YWlsYWJsZSk7CiAgICAg
fQogfTsKIApJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1R5cGVUb2tlbkFubm90YXRvci5qcwko
cmV2aXNpb24gMTgwMzg4KQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw4IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IgPSBmdW5jdGkKICAgICB0
aGlzLl9zY3JpcHQgPSBzY3JpcHQ7CiAgICAgdGhpcy5fdHlwZVRva2VuTm9kZXMgPSBbXTsKICAg
ICB0aGlzLl90eXBlVG9rZW5Cb29rbWFya3MgPSBbXTsKKworICAgIFdlYkluc3BlY3Rvci5ydW50
aW1lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SdW50aW1lTWFuYWdlci5F
dmVudC5OZXdUeXBlSW5mb3JtYXRpb25BdmFpbGFibGUsIHRoaXMuaW5zZXJ0QW5ub3RhdGlvbnMs
IHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLlR5cGVUb2tlbkFubm90YXRvci5wcm90b3R5cGUg
PSB7CkBAIC00Myw2ICs0NSw4IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJv
dG90eXAKICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKKyAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRJZk5lZWRlZCgpOworCiAgICAgICAgIHZhciBz
Y3JpcHRTeW50YXhUcmVlID0gdGhpcy5fc2NyaXB0LnNjcmlwdFN5bnRheFRyZWU7CiAKICAgICAg
ICAgaWYgKCFzY3JpcHRTeW50YXhUcmVlKSB7CkBAIC03MCw3ICs3NCw4IEBAIFdlYkluc3BlY3Rv
ci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJvdG90eXAKICAgICAgICAgICAgIGFsbE5vZGVzSW5SYW5n
ZS5mb3JFYWNoKHRoaXMuX2luc2VydFR5cGVUb2tlbnNGb3JFYWNoTm9kZSwgdGhpcyk7CiAKICAg
ICAgICAgICAgIHZhciB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lOwotICAgICAg
ICAgICAgdmFyIHRpbWVvdXRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoNzUwMCwgdG90YWxUaW1l
KSwgOCAqIHRvdGFsVGltZSk7CisgICAgICAgICAgICAvL3ZhciB0aW1lb3V0VGltZSA9IE1hdGgu
bWluKE1hdGgubWF4KDc1MDAsIHRvdGFsVGltZSksIDggKiB0b3RhbFRpbWUpOworICAgICAgICAg
ICAgdmFyIHRpbWVvdXRUaW1lID0gMTAwMDA7CiAKICAgICAgICAgICAgIHRoaXMuX3RpbWVvdXRJ
ZGVudGlmaWVyID0gc2V0VGltZW91dChmdW5jdGlvbiB0aW1lb3V0VXBkYXRlKCkgewogICAgICAg
ICAgICAgICAgIHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyID0gbnVsbDsKSW5kZXg6IFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9SdW50aW1lT2JzZXJ2ZXIuanMJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsMTYgQEAgV2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlci5w
cm90b3R5cGUgPQogICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkOiBmdW5jdGlvbihjb250ZXh0
UGF5bG9hZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdl
ci5leGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCk7CisgICAgfSwKKworICAg
IG5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnJ1bnRpbWVNYW5hZ2VyLm5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZSgp
OworICAgIH0sCisKKyAgICBuZXdCYXNpY0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFibGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5ydW50aW1lTWFuYWdlci5uZXdCYXNp
Y0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFibGUoKTsKICAgICB9CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247604</attachid>
            <date>2015-02-28 11:04:56 -0800</date>
            <delta_ts>2015-02-28 11:04:56 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>23584</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAkocmV2aXNpb24gMTgwMzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMjEgQEAgc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOgogICAgICAgICAucmVsZWFzZSgpOwogfQogCit2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQoreworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBSdW50aW1lQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25u
ZWN0UmVhc29uIHJlYXNvbikKK3sKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7
CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOworCisgICAgaWYgKHJlYXNvbiAhPSBE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9pc1R5cGVQcm9m
aWxpbmdFbmFibGVkKQorICAgICAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUoZmFsc2Up
OworfQorCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9y
UmFuZ2U+JiByYW5nZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxWTSgpOwpAQCAtMjgyLDEyICsy
OTcsMjAgQEAgcHVibGljOgogICAgIH0KIH07CiAKLXN0YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpT
RnVuY3Rpb25zRm9yVHlwZVByb2ZpbGluZyhWTSYgdm0sIGJvb2wgc2hvdWxkRW5hYmxlVHlwZVBy
b2ZpbGluZykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpyZWNvbXBpbGVBbGxKU0Z1bmN0
aW9uc0ZvclR5cGVQcm9maWxpbmcoVk0mIHZtLCBib29sIHNob3VsZEVuYWJsZVR5cGVQcm9maWxp
bmcpCiB7CiAgICAgYm9vbCBzaG91bGRSZWNvbXBpbGVGcm9tVHlwZVByb2ZpbGVyID0gKHNob3Vs
ZEVuYWJsZVR5cGVQcm9maWxpbmcgPyB2bS5lbmFibGVUeXBlUHJvZmlsZXIoKSA6IHZtLmRpc2Fi
bGVUeXBlUHJvZmlsZXIoKSk7CiAgICAgYm9vbCBzaG91bGRSZWNvbXBpbGVGcm9tQ29udHJvbEZs
b3dQcm9maWxlciA9IChzaG91bGRFbmFibGVUeXBlUHJvZmlsaW5nID8gdm0uZW5hYmxlQ29udHJv
bEZsb3dQcm9maWxlcigpIDogdm0uZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAgICAg
Ym9vbCBuZWVkc1RvUmVjb21waWxlID0gc2hvdWxkUmVjb21waWxlRnJvbVR5cGVQcm9maWxlciB8
fCBzaG91bGRSZWNvbXBpbGVGcm9tQ29udHJvbEZsb3dQcm9maWxlcjsKIAorICAgIGlmIChzaG91
bGRFbmFibGVUeXBlUHJvZmlsaW5nKSB7CisgICAgICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5z
ZXRMb2dDbGVhcmVkQ2FsbGJhY2soW3RoaXNdICgpIHsKKyAgICAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5uZXdUeXBlSW5mb3JtYXRpb25BdmFpbGFibGUoKTsKKyAgICAgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5uZXdCYXNpY0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFibGUoKTsK
KyAgICAgICAgfSk7CisgICAgfSBlbHNlIGlmICh2bS50eXBlUHJvZmlsZXJMb2coKSkKKyAgICAg
ICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnNldExvZ0NsZWFyZWRDYWxsYmFjayhudWxscHRyKTsK
KwogICAgIGlmIChuZWVkc1RvUmVjb21waWxlKSB7CiAgICAgICAgIHZtLnByZXBhcmVUb0Rpc2Nh
cmRDb2RlKCk7CiAgICAgICAgIFR5cGVSZWNvbXBpbGVyIHJlY29tcGlsZXI7CkBAIC0yOTYsMTIg
KzMxOSw2IEBAIHN0YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zRm9yVHkKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKLXsKLSAgICBpZiAocmVhc29uICE9IERp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCAmJiBtX2lzVHlwZVByb2Zp
bGluZ0VuYWJsZWQpCi0gICAgICAgIHNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZShmYWxzZSk7
Ci19Ci0KIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGVUeXBlUHJvZmlsZXIoRXJy
b3JTdHJpbmcmKQogewogICAgIHNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZSh0cnVlKTsKQEAg
LTMyNSw3ICszNDIsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0VHlwZVByb2Zp
CiAgICAgLy8gdXAgdGhyb3dpbmcgYXdheSBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUgc3RhY2su
CiAgICAgaWYgKHZtLmVudHJ5U2NvcGUpIHsKICAgICAgICAgdm0uZW50cnlTY29wZS0+c2V0RW50
cnlTY29wZURpZFBvcExpc3RlbmVyKHRoaXMsCi0gICAgICAgICAgICBbPV0gKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqKSB7CisgICAgICAgICAgICBbc2hvdWxkRW5hYmxlVHlwZVByb2ZpbGluZywg
dGhpc10gKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKSB7CiAgICAgICAgICAgICAgICAgcmVjb21w
aWxlQWxsSlNGdW5jdGlvbnNGb3JUeXBlUHJvZmlsaW5nKHZtLCBzaG91bGRFbmFibGVUeXBlUHJv
ZmlsaW5nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKQEAgLTM0NCw4ICszNjEsMTIgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvYwogICAgIGJvb2wgb2theTsK
ICAgICBpbnRwdHJfdCBzb3VyY2VJRCA9IHNvdXJjZUlEQXNTdHJpbmcudG9JbnRQdHJTdHJpY3Qo
Jm9rYXkpOwogICAgIEFTU0VSVChva2F5KTsKLSAgICBjb25zdCBWZWN0b3I8QmFzaWNCbG9ja1Jh
bmdlPiYgYmFzaWNCbG9ja1JhbmdlcyA9IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+Z2V0QmFz
aWNCbG9ja3NGb3JTb3VyY2VJRChzb3VyY2VJRCwgdm0pOwogICAgIGJhc2ljQmxvY2tzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFz
aWNCbG9jaz46OmNyZWF0ZSgpOworICAgIGlmICghdm0uY29udHJvbEZsb3dQcm9maWxlcigpLT5p
c0RpcnR5KCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2bS5jb250cm9sRmxvd1By
b2ZpbGVyKCktPmNsZWFyRGlydHlGbGFnKCk7CisgICAgY29uc3QgVmVjdG9yPEJhc2ljQmxvY2tS
YW5nZT4mIGJhc2ljQmxvY2tSYW5nZXMgPSB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJh
c2ljQmxvY2tzRm9yU291cmNlSUQoc291cmNlSUQsIHZtKTsKICAgICBmb3IgKGNvbnN0IEJhc2lj
QmxvY2tSYW5nZSYgYmxvY2sgOiBiYXNpY0Jsb2NrUmFuZ2VzKSB7CiAgICAgICAgIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPiBsb2NhdGlvbiA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s6OmNyZWF0ZSgpCiAgICAgICAgICAgICAu
c2V0U3RhcnRPZmZzZXQoYmxvY2subV9zdGFydE9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUnVudGltZUFn
ZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRl
IHsgbV9lbmFibGVkID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQpAQCAtODcsOCArODgsMTIgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW50
aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworCiBwcml2YXRl
OgogICAgIHZvaWQgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGJvb2wpOworICAgIHZvaWQg
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNGb3JUeXBlUHJvZmlsaW5nKEpTQzo6Vk0mICwgYm9vbCBz
aG91bGRFbmFibGVUeXBlUHJvZmlsaW5nKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciog
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0
RGVidWdTZXJ2ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDIwICs0MCw2IEBAIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamUK
IHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKLX0KLQotdm9pZCBKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVj
dFJlYXNvbiByZWFzb24pCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKLQotICAgIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKLX0KLQogVk0mIEpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpnbG9iYWxWTSgpCiB7CiAgICAgcmV0dXJuIG1fZ2xv
YmFsT2JqZWN0LnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
LmgJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDkgKzM4LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwgOgogcHVi
bGljOgogICAgIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdl
ciosIEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0KICAgICB2aXJ0dWFsIEpTQzo6Vk0mIGdsb2Jh
bFZNKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3Zl
cnJpZGU7CiAKQEAgLTUwLDggKzQ3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bm11
dGVDb25zb2xlKCkgb3ZlcnJpZGUgeyB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJl
ZlB0cjxSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNv
bgkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9SdW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsMTYgQEAK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRleHQiLCAiJHJlZiI6ICJFeGVjdXRpb25D
b250ZXh0RGVzY3JpcHRpb24iLCAiZGVzY3JpcHRpb24iOiAiQSBuZXdseSBjcmVhdGVkIGV4ZWN1
dGlvbiBjb250ZXguIiB9CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIklzc3VlZCB3aGVuIG5ldyBleGVjdXRpb24gY29udGV4dCBpcyBjcmVhdGVkLiIKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAibmV3VHlwZUluZm9ybWF0aW9u
QXZhaWxhYmxlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiSXNzdWVkIHdoZW4gbmV3IHR5cGUgaW5mb3JtYXRpb24gaXMgYXZhaWxh
YmxlLiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAibmV3QmFz
aWNCbG9ja0luZm9ybWF0aW9uQXZhaWxhYmxlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
W10sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSXNzdWVkIHdoZW4gdGhlIGNvbnRyb2wg
ZmxvdyBwcm9maWxlciBtYXkgaGF2ZSBuZXcgZGF0YS4iCiAgICAgICAgIH0KICAgICBdCiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEzNTksNiArMTM1
OSwxMCBAQCBfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIHN0b3JlYiAxLCBCYXNp
Y0Jsb2NrTG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QwXSwgdDAKKyAgICBsb2FkcCBWTTo6
bV9jb250cm9sRmxvd1Byb2ZpbGVyW3QwXSwgdDAKKyAgICBzdG9yZWIgMSwgQ29udHJvbEZsb3dQ
cm9maWxlcjo6bV9kaXJ0eUZsYWdbdDBdCiAgICAgZGlzcGF0Y2goMikKIAogIyBMYXN0bHksIG1h
a2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxs
IG9wY29kZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Jsb2Nr
TG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDkgQEAgdm9pZCBCYXNpY0Jsb2NrTG9jYXRpb246OmVtaXRFeGVjdXRlQ29k
ZQogewogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmbV9oYXNFeGVj
dXRlZCksIHB0clJlZyk7CiAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mih0cnVlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHB0clJlZywgMCkpOworCisgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC52bSgpLT5jb250cm9sRmxvd1Byb2Zp
bGVyKCktPmRpcnR5RmxhZ1BvaW50ZXIoKSksIHB0clJlZyk7CisgICAgaml0LnN0b3JlOChDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHB0clJl
ZywgMCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCShyZXZp
c2lvbiAxODAzNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxv
d1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogQ29udHJvbEZsb3dQcm9maWxlcjo6Q29udHJvbEZsb3dQcm9maWxlcigpCiAgICAg
OiBtX2R1bW15QmFzaWNCbG9jayhCYXNpY0Jsb2NrTG9jYXRpb24oLTEsIC0xKSkKKyAgICAsIG1f
ZGlydHlGbGFnKGZhbHNlKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5oCShyZXZpc2lvbiAxODAzNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk4LDEzICs5OCwxOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPEJhc2lj
QmxvY2tSYW5nZT4gZ2V0QmFzaWNCbG9ja3NGb3JTb3VyY2VJRChpbnRwdHJfdCBzb3VyY2VJRCwg
Vk0mKSBjb25zdDsKICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGR1bW15QmFzaWNCbG9jaygpIHsg
cmV0dXJuICZtX2R1bW15QmFzaWNCbG9jazsgfQogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzQmFzaWNCbG9ja0F0VGV4dE9mZnNldEJlZW5FeGVjdXRlZChpbnQsIGludHB0cl90LCBWTSYp
OyAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3IgdGVzdGluZy4KKyAgICBib29sKiBkaXJ0eUZs
YWdQb2ludGVyKCkgeyByZXR1cm4gJm1fZGlydHlGbGFnOyB9CisgICAgYm9vbCBpc0RpcnR5KCkg
eyByZXR1cm4gbV9kaXJ0eUZsYWc7IH0KKyAgICB2b2lkIGNsZWFyRGlydHlGbGFnKCkgeyBtX2Rp
cnR5RmxhZyA9IGZhbHNlOyB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8QmFzaWNCbG9ja0tleSwgQmFzaWNC
bG9ja0xvY2F0aW9uKj4gQmxvY2tMb2NhdGlvbkNhY2hlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxp
bnRwdHJfdCwgQmxvY2tMb2NhdGlvbkNhY2hlPiBTb3VyY2VJREJ1Y2tldHM7CiAKICAgICBTb3Vy
Y2VJREJ1Y2tldHMgbV9zb3VyY2VJREJ1Y2tldHM7CiAgICAgQmFzaWNCbG9ja0xvY2F0aW9uIG1f
ZHVtbXlCYXNpY0Jsb2NrOworICAgIGJvb2wgbV9kaXJ0eUZsYWc7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxl
ckxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyTG9nLmNwcAkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTIg
KzU0LDE2IEBAIFR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZygpCiAKIHZvaWQgVHlw
ZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhTdHJpbmcgcmVhc29uKQogeworICAgIGlm
IChpc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCAiJyIpOwogCiAgICAgZG91Ymxl
IGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBMb2dFbnRyeSogZW50cnkgPSBtX2xvZ1N0
YXJ0UHRyOwogICAgIEhhc2hNYXA8U3RydWN0dXJlKiwgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4g
c2VlblNoYXBlczsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihlbnRyeSA8
PSBtX2N1cnJlbnRMb2dFbnRyeVB0cik7CiAgICAgd2hpbGUgKGVudHJ5ICE9IG1fY3VycmVudExv
Z0VudHJ5UHRyKSB7CiAgICAgICAgIFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVyZUlE
OwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKQEAgLTkxLDYgKzk1LDkg
QEAgdm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKAogICAgICAgICBkb3Vi
bGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgICAgIGRhdGFMb2dGKCIgUHJvY2Vzc2lu
ZyB0aGUgbG9nIHRvb2s6ICclZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKICAgICB9CisKKyAg
ICBpZiAobV9sb2dDbGVhcmVkQ2FsbGJhY2spCisgICAgICAgIG1fbG9nQ2xlYXJlZENhbGxiYWNr
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgJKHJldmlzaW9uIDE4MDM3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHJvY2Vzc0xvZ0VudHJpZXMoU3RyaW5nKTsKICAgICBMb2dFbnRyeSogbG9nRW5kUHRyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dFbmRQdHI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9PSBtX2xvZ1N0YXJ0UHRyOyB9CisgICAgdm9p
ZCBzZXRMb2dDbGVhcmVkQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKSB7
IG1fbG9nQ2xlYXJlZENhbGxiYWNrID0gY2FsbGJhY2s7IH0KIAogICAgIHN0YXRpYyBwdHJkaWZm
X3QgbG9nU3RhcnRPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVHlwZVByb2ZpbGVy
TG9nLCBtX2xvZ1N0YXJ0UHRyKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgY3VycmVudExvZ0Vu
dHJ5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVQcm9maWxlckxvZywgbV9j
dXJyZW50TG9nRW50cnlQdHIpOyB9CkBAIC03OCw2ICs4MCw4IEBAIHByaXZhdGU6CiAgICAgTG9n
RW50cnkqIG1fbG9nU3RhcnRQdHI7CiAgICAgTG9nRW50cnkqIG1fY3VycmVudExvZ0VudHJ5UHRy
OwogICAgIExvZ0VudHJ5KiBtX2xvZ0VuZFB0cjsKKworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBtX2xvZ0NsZWFyZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAkocmV2aXNp
b24gMTgwMzc3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwyMSArNTksMTIgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6
UGFnZVJ1bnRpbWVBZ2VudChJbmplYwogewogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKLXsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKLX0KLQogdm9pZCBQYWdlUnVudGlt
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CisgICAgSW5zcGVjdG9yUnVudGltZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwogCiAgICAgU3RyaW5n
IHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7Ci0KLSAgICBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKIHZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAkocmV2aXNpb24gMTgw
Mzc3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgUGFnZVJ1bnRpbWVBZ2Vu
dChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFBhZ2UqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92
ZXJyaWRlOwpAQCAtNzQsOCArNzMsNiBAQCBwcml2YXRlOgogCiAgICAgUGFnZSogbV9pbnNwZWN0
ZWRQYWdlOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVu
ZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9tYWluV29ybGRDb250ZXh0Q3Jl
YXRlZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTggKzUy
LDYgQEAgV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSQogewogfQogCi12
b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCi17Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwotfQotCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKLXsKLSAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0KLSAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7Ci19Ci0KIEluamVjdGVkU2NyaXB0IFdv
cmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJv
ciwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNv
bnRleHRJZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuaAkocmV2aXNpb24gMTgwMzc3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclJ1bnRpbWVBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw2IEBAIHB1
YmxpYzoKICAgICBXb3JrZXJSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBXb3JrZXJHbG9iYWxTY29wZSopOwogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRpbWVB
Z2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKLQogICAgIHZpcnR1
YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcGF1c2VXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwpAQCAtNTYsNyArNTMsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgV29ya2VyR2xvYmFsU2NvcGUq
IG1fd29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9wYXVzZWQ7CiB9
OwogCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Bbm5vdGF0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzCShyZXZpc2lvbiAxODAzNzcpCisrKyBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Bbm5vdGF0b3Iu
anMJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJJbnNwZWN0b3IuQW5ub3Rh
dG9yLnByb3RvdHlwZSA9IHsKIAogICAgIHBhdXNlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB0aGlzLl9jbGVhclRpbWVvdXRJZk5lZWRlZCgpOworICAgICAgICB0aGlzLmNsZWFyVGltZW91
dElmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7CiAgICAgfSwKIAog
ICAgIHJlc3VtZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fY2xlYXJUaW1lb3V0
SWZOZWVkZWQoKTsKKyAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRJZk5lZWRlZCgpOwogICAgICAg
ICB0aGlzLl9pc0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHRoaXMuaW5zZXJ0QW5ub3RhdGlvbnMo
KTsKICAgICB9LApAQCAtNzAsMTMgKzcwLDEzIEBAIFdlYkluc3BlY3Rvci5Bbm5vdGF0b3IucHJv
dG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX2lzQWN0aXZlKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIHRoaXMuX2NsZWFyVGltZW91dElmTmVlZGVkKCk7CisgICAgICAgIHRo
aXMuY2xlYXJUaW1lb3V0SWZOZWVkZWQoKTsKICAgICAgICAgdGhpcy5pbnNlcnRBbm5vdGF0aW9u
cygpOwogICAgIH0sCiAKICAgICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhp
cy5fY2xlYXJUaW1lb3V0SWZOZWVkZWQoKTsKKyAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRJZk5l
ZWRlZCgpOwogICAgICAgICB0aGlzLl9pc0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHRoaXMuY2xl
YXJBbm5vdGF0aW9ucygpOwogICAgICAgICB0aGlzLmluc2VydEFubm90YXRpb25zKCk7CkBAIC0x
MDAsOSArMTAwLDcgQEAgV2ViSW5zcGVjdG9yLkFubm90YXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAotICAgIC8vIFByaXZh
dGUKLQotICAgIF9jbGVhclRpbWVvdXRJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIGNsZWFyVGlt
ZW91dElmTmVlZGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdGltZW91
dElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0SWRl
bnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9CYXNpY0Jsb2NrQW5ub3RhdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Jhc2ljQmxvY2tBbm5vdGF0b3Iu
anMJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0Jhc2ljQmxvY2tBbm5vdGF0b3IuanMJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDggQEAgV2ViSW5zcGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0b3IgPSBmdW5jdAog
CiAgICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0OwogICAgIHRoaXMuX2Jhc2ljQmxvY2tNYXJrZXJz
ID0gbmV3IE1hcDsgLy8gT25seSBjb250YWlucyB1bmV4ZWN1dGVkIGJhc2ljIGJsb2Nrcy4KKwor
ICAgIFdlYkluc3BlY3Rvci5ydW50aW1lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5SdW50aW1lTWFuYWdlci5FdmVudC5OZXdCYXNpY0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFi
bGUsIHRoaXMuaW5zZXJ0QW5ub3RhdGlvbnMsIHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkJh
c2ljQmxvY2tBbm5vdGF0b3IuSGFzTm90RXhlY3V0ZWRDbGFzc05hbWUgPSAiYmFzaWMtYmxvY2st
aGFzLW5vdC1leGVjdXRlZCI7CkBAIC01MCw2ICs1Miw3IEBAIFdlYkluc3BlY3Rvci5CYXNpY0Js
b2NrQW5ub3RhdG9yLnByb3RvdHkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLmNsZWFyVGltZW91dElmTmVlZGVk
KCk7CiAgICAgICAgIHRoaXMuX2Fubm90YXRlQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcygpOwog
ICAgIH0sCiAKQEAgLTg3LDcgKzkwLDggQEAgV2ViSW5zcGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0
b3IucHJvdG90eQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgdG90YWxUaW1lID0g
RGF0ZS5ub3coKSAtIHN0YXJ0VGltZTsKLSAgICAgICAgICAgIHZhciB0aW1lb3V0VGltZSA9IE1h
dGgubWluKE1hdGgubWF4KDY1MDAsIHRvdGFsVGltZSksIDMwICogdG90YWxUaW1lKTsKKyAgICAg
ICAgICAgIC8vdmFyIHRpbWVvdXRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoNjUwMCwgdG90YWxU
aW1lKSwgMzAgKiB0b3RhbFRpbWUpOworICAgICAgICAgICAgdmFyIHRpbWVvdXRUaW1lID0gMTAw
MDA7CiAgICAgICAgICAgICB0aGlzLl90aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQodGhp
cy5pbnNlcnRBbm5vdGF0aW9ucy5iaW5kKHRoaXMpLCB0aW1lb3V0VGltZSk7CiAgICAgICAgIH0u
YmluZCh0aGlzKSk7CiAgICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2Vy
LmpzCShyZXZpc2lvbiAxODAzNzcpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsOSBAQCBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIgPSBmdW5jdGlvbigpCiB9Owog
CiBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIuRXZlbnQgPSB7Ci0gICAgRGlkRXZhbHVhdGU6
ICJydW50aW1lLW1hbmFnZXItZGlkLWV2YWx1YXRlIgorICAgIERpZEV2YWx1YXRlOiBTeW1ib2wo
InJ1bnRpbWUtbWFuYWdlci1kaWQtZXZhbHVhdGUiKSwKKyAgICBOZXdUeXBlSW5mb3JtYXRpb25B
dmFpbGFibGU6IFN5bWJvbCgicnVudGltZS1tYW5hZ2VyLW5ldy10eXBlLWluZm9ybWF0aW9uLWF2
YWlsYWJsZSIpLAorICAgIE5ld0Jhc2ljQmxvY2tJbmZvcm1hdGlvbkF2YWlsYWJsZTogU3ltYm9s
KCJydW50aW1lLW1hbmFnZXItbmV3LWJhc2ljLWJsb2NrLWluZm9ybWF0aW9uLWF2YWlsYWJsZSIp
CiB9OwogCiBXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIucHJvdG90eXBlID0gewpAQCAtOTEs
NiArOTMsMTYgQEAgV2ViSW5zcGVjdG9yLlJ1bnRpbWVNYW5hZ2VyLnByb3RvdHlwZSA9IAogCiAg
ICAgICAgICAgICBjYWxsYmFjayhudWxsLCBwcm9wZXJ0aWVzKTsKICAgICAgICAgfSk7CisgICAg
fSwKKworICAgIG5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJ1bnRp
bWVNYW5hZ2VyLkV2ZW50Lk5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZSk7CisgICAgfSwKKwor
ICAgIG5ld0Jhc2ljQmxvY2tJbmZvcm1hdGlvbkF2YWlsYWJsZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJ1bnRp
bWVNYW5hZ2VyLkV2ZW50Lk5ld0Jhc2ljQmxvY2tJbmZvcm1hdGlvbkF2YWlsYWJsZSk7CiAgICAg
fQogfTsKIApJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1R5cGVUb2tlbkFubm90YXRvci5qcwko
cmV2aXNpb24gMTgwMzg4KQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw4IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IgPSBmdW5jdGkKICAgICB0
aGlzLl9zY3JpcHQgPSBzY3JpcHQ7CiAgICAgdGhpcy5fdHlwZVRva2VuTm9kZXMgPSBbXTsKICAg
ICB0aGlzLl90eXBlVG9rZW5Cb29rbWFya3MgPSBbXTsKKworICAgIFdlYkluc3BlY3Rvci5ydW50
aW1lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SdW50aW1lTWFuYWdlci5F
dmVudC5OZXdUeXBlSW5mb3JtYXRpb25BdmFpbGFibGUsIHRoaXMuaW5zZXJ0QW5ub3RhdGlvbnMs
IHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLlR5cGVUb2tlbkFubm90YXRvci5wcm90b3R5cGUg
PSB7CkBAIC00Myw2ICs0NSw4IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJv
dG90eXAKICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKKyAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRJZk5lZWRlZCgpOworCiAgICAgICAgIHZhciBz
Y3JpcHRTeW50YXhUcmVlID0gdGhpcy5fc2NyaXB0LnNjcmlwdFN5bnRheFRyZWU7CiAKICAgICAg
ICAgaWYgKCFzY3JpcHRTeW50YXhUcmVlKSB7CkBAIC03MCw3ICs3NCw4IEBAIFdlYkluc3BlY3Rv
ci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJvdG90eXAKICAgICAgICAgICAgIGFsbE5vZGVzSW5SYW5n
ZS5mb3JFYWNoKHRoaXMuX2luc2VydFR5cGVUb2tlbnNGb3JFYWNoTm9kZSwgdGhpcyk7CiAKICAg
ICAgICAgICAgIHZhciB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lOwotICAgICAg
ICAgICAgdmFyIHRpbWVvdXRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoNzUwMCwgdG90YWxUaW1l
KSwgOCAqIHRvdGFsVGltZSk7CisgICAgICAgICAgICAvL3ZhciB0aW1lb3V0VGltZSA9IE1hdGgu
bWluKE1hdGgubWF4KDc1MDAsIHRvdGFsVGltZSksIDggKiB0b3RhbFRpbWUpOworICAgICAgICAg
ICAgdmFyIHRpbWVvdXRUaW1lID0gMTAwMDA7CiAKICAgICAgICAgICAgIHRoaXMuX3RpbWVvdXRJ
ZGVudGlmaWVyID0gc2V0VGltZW91dChmdW5jdGlvbiB0aW1lb3V0VXBkYXRlKCkgewogICAgICAg
ICAgICAgICAgIHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyID0gbnVsbDsKSW5kZXg6IFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9SdW50aW1lT2JzZXJ2ZXIuanMJKHJldmlzaW9uIDE4MDM3NykKKysrIFNvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsMTYgQEAgV2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlci5w
cm90b3R5cGUgPQogICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkOiBmdW5jdGlvbihjb250ZXh0
UGF5bG9hZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdl
ci5leGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCk7CisgICAgfSwKKworICAg
IG5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnJ1bnRpbWVNYW5hZ2VyLm5ld1R5cGVJbmZvcm1hdGlvbkF2YWlsYWJsZSgp
OworICAgIH0sCisKKyAgICBuZXdCYXNpY0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFibGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5ydW50aW1lTWFuYWdlci5uZXdCYXNp
Y0Jsb2NrSW5mb3JtYXRpb25BdmFpbGFibGUoKTsKICAgICB9CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>