<?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>25956</bug_id>
          
          <creation_ts>2009-05-22 00:50:53 -0700</creation_ts>
          <short_desc>Canvas&apos; composition is incorrect when alpha=0</short_desc>
          <delta_ts>2009-05-22 06:25:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>25417</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>122592</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-05-22 00:50:53 -0700</bug_when>
    <thetext>In GraphicsContextCG and GraphicsContextSkia, there are optimization path for alpha=0 case, with which WebKit renders nothing. However, this behavior is incorrect for some composite modes (e.g., &apos;copy&apos;).

See also this bug: https://bugs.webkit.org/show_bug.cgi?id=25417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122594</commentid>
    <comment_count>1</comment_count>
      <attachid>30577</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-05-22 00:52:54 -0700</bug_when>
    <thetext>Created attachment 30577
Remove optimization path alpha=0 case from GraphicContext(CG|Skia)

 .../canvas/canvas-composite-alpha-expected.txt     |  202 +++++++++++++++++++-
 .../fast/canvas/canvas-composite-alpha.html        |   89 ++++++++--
 .../canvas/canvas-composite-alpha-expected.txt     |  181 ------------------
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |   42 ++---
 .../platform/graphics/skia/GraphicsContextSkia.cpp |   27 +---
 5 files changed, 290 insertions(+), 251 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122595</commentid>
    <comment_count>2</comment_count>
      <attachid>30577</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-05-22 00:53:29 -0700</bug_when>
    <thetext>Comment on attachment 30577
Remove optimization path alpha=0 case from GraphicContext(CG|Skia)

This is the reason why I introduced failing test cases in the previous patch:

https://bugs.webkit.org/show_bug.cgi?id=25417

This optimization was introduced 3 years ago. At this time, fillRect() always calls fillRectSourceOver() so that this optimization was OK. So, I guess the current behavior (when alpha is zero, all fillrect operations are skipped even if the composite mode is &apos;copy&apos;) is not intentional.

http://trac.webkit.org/changeset/13992/trunk/WebCore/platform/mac/GraphicsContextMac.mm

Fortunately, Skia has the similar optimization path inside Skia and Skia checks the composition mode if it is safe to do this optimization. I don&apos;t know if CG has similar logic, but anyway I think this patch won&apos;t reduce performance significantly as alpha=0 cases may be rare.

I also made error messages of the layout test case better, and added test case for path and fill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122622</commentid>
    <comment_count>3</comment_count>
      <attachid>30577</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-22 02:40:49 -0700</bug_when>
    <thetext>Comment on attachment 30577
Remove optimization path alpha=0 case from GraphicContext(CG|Skia)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122631</commentid>
    <comment_count>4</comment_count>
      <attachid>30578</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-05-22 03:54:42 -0700</bug_when>
    <thetext>Created attachment 30578
Remove optimization path alpha=0 case from GraphicContext(CG|Skia)

 LayoutTests/ChangeLog                              |   12 ++
 .../canvas/canvas-composite-alpha-expected.txt     |  202 +++++++++++++++++++-
 .../fast/canvas/canvas-composite-alpha.html        |   89 ++++++++--
 .../canvas/canvas-composite-alpha-expected.txt     |  181 ------------------
 WebCore/ChangeLog                                  |   26 +++
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |   42 ++---
 .../platform/graphics/skia/GraphicsContextSkia.cpp |   27 +---
 7 files changed, 328 insertions(+), 251 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122632</commentid>
    <comment_count>5</comment_count>
      <attachid>30577</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-05-22 03:56:03 -0700</bug_when>
    <thetext>Comment on attachment 30577
Remove optimization path alpha=0 case from GraphicContext(CG|Skia)

Sorry, I forgot to add ChangeLog. The difference between this patch and the next should be only ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122637</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-22 06:25:05 -0700</bug_when>
    <thetext>	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/canvas/canvas-composite-alpha-expected.txt
	M	LayoutTests/fast/canvas/canvas-composite-alpha.html
	M	LayoutTests/platform/gtk/fast/canvas/canvas-composite-alpha-expected.txt
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/cg/GraphicsContextCG.cpp
	M	WebCore/platform/graphics/skia/GraphicsContextSkia.cpp
Committed r44041
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30577</attachid>
            <date>2009-05-22 00:52:54 -0700</date>
            <delta_ts>2009-05-22 03:56:03 -0700</delta_ts>
            <desc>Remove optimization path alpha=0 case from GraphicContext(CG|Skia)</desc>
            <filename>Remove-optimization-path-alpha-0-case-from-GraphicContext-CG-Skia-.patch</filename>
            <type>text/plain</type>
            <size>20821</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">NDEzMWJlNjQxYTAxMTE0OGM3MjQ1ZWIxZDA0Y2M0MjFjMDRkZDZiNQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1hbHBoYS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLWV4cGVjdGVk
LnR4dAppbmRleCBjNDM4ODUwLi43YWJhMDZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDE4NyBAQAogVGhpcyB0ZXN0IGV4ZXJjaXNlcyBhIGJ1bmNoIG9mIGNvbG9yIGNvbXBv
c2l0aW9uIHdpdGggYWxwaGEgYmxlbmRpbmcuIFRoZSB0b3AtbGVmdCByZWN0YW5nbGVzIGFyZSB0
aGUgc291cmNlIGltYWdlcyBhbmQgYm90dG9tLXJpZ2h0IHJlY3RhbmdsZXMgYXJlIHRoZSBkZXN0
aW5hdGlvbiBpbWFnZXMuCiAKK1Rlc3RzIGZvciBmaWxsIHJlY3QKKworc3JjIDI1NSwgMCwgMCwg
MjU1CXNyYyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1LCAwLCAwLCAyNTUJc3JjIDAsIDI1NSwgMCwg
MAlzcmMgMCwgMjU1LCAwLCAxCXNyYyAyNTUsIDAsIDAsIDAJc3JjIDI1NSwgMCwgMCwgMTI3CXNy
YyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1LCAwLCAwLCAxMjcJc3JjIDEyNywgMCwgMCwgMjU1CXNy
YyAxMjcsIDAsIDAsIDEyNwlzcmMgMjU1LCAwLCAwLCAxMjcJc3JjIDI1NSwgMTI3LCAwLCAzMglz
cmMgMjU1LCAwLCAwLCAxOTEJc3JjIDI1NSwgMCwgMjU1LCAxOTEKK2RzdCAwLCAyNTUsIDAsIDI1
NQlkc3QgMCwgMjU1LCAwLCAwCWRzdCAwLCAyNTUsIDAsIDEJZHN0IDI1NSwgMCwgMCwgMjU1CWRz
dCAyNTUsIDAsIDAsIDI1NQlkc3QgMCwgMjU1LCAwLCAyNTUJZHN0IDAsIDI1NSwgMCwgMTI3CWRz
dCAwLCAyNTUsIDAsIDEyNwlkc3QgMCwgMjU1LCAwLCAyNTUJZHN0IDAsIDEyNywgMCwgMTI3CWRz
dCAwLCAxMjcsIDAsIDI1NQlkc3QgMjU1LCAwLCAwLCA2Mwlkc3QgMjU1LCA2MywgMCwgNjMJZHN0
IDAsIDI1NSwgMCwgMTI3CWRzdCAwLCAyNTUsIDI1NSwgMTI3Citzb3VyY2Utb3ZlcgkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwor
c291cmNlLWluCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCitQQVNTCitQQVNTCitzb3VyY2Utb3V0CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitzb3VyY2UtYXRvcAkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworZGVz
dGluYXRpb24tb3ZlcgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQorUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworUEFTUworUEFTUworUEFTUworZGVzdGluYXRpb24taW4JCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK2Rlc3RpbmF0aW9uLW91
dAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworUEFTUworZGVzdGluYXRpb24tYXRvcAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworbGlnaHRlcgkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworY29weQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworeG9yCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCitUZXN0cyBmb3IgcGF0aCBhbmQgZmlsbAorCiBzcmMgMjU1LCAwLCAwLCAy
NTUJc3JjIDI1NSwgMCwgMCwgMjU1CXNyYyAyNTUsIDAsIDAsIDI1NQlzcmMgMCwgMjU1LCAwLCAw
CXNyYyAwLCAyNTUsIDAsIDEJc3JjIDI1NSwgMCwgMCwgMAlzcmMgMjU1LCAwLCAwLCAxMjcJc3Jj
IDI1NSwgMCwgMCwgMjU1CXNyYyAyNTUsIDAsIDAsIDEyNwlzcmMgMTI3LCAwLCAwLCAyNTUJc3Jj
IDEyNywgMCwgMCwgMTI3CXNyYyAyNTUsIDAsIDAsIDEyNwlzcmMgMjU1LCAxMjcsIDAsIDMyCXNy
YyAyNTUsIDAsIDAsIDE5MQlzcmMgMjU1LCAwLCAyNTUsIDE5MQogZHN0IDAsIDI1NSwgMCwgMjU1
CWRzdCAwLCAyNTUsIDAsIDAJZHN0IDAsIDI1NSwgMCwgMQlkc3QgMjU1LCAwLCAwLCAyNTUJZHN0
IDI1NSwgMCwgMCwgMjU1CWRzdCAwLCAyNTUsIDAsIDI1NQlkc3QgMCwgMjU1LCAwLCAxMjcJZHN0
IDAsIDI1NSwgMCwgMTI3CWRzdCAwLCAyNTUsIDAsIDI1NQlkc3QgMCwgMTI3LCAwLCAxMjcJZHN0
IDAsIDEyNywgMCwgMjU1CWRzdCAyNTUsIDAsIDAsIDYzCWRzdCAyNTUsIDYzLCAwLCA2Mwlkc3Qg
MCwgMjU1LCAwLCAxMjcJZHN0IDAsIDI1NSwgMjU1LCAxMjcKIHNvdXJjZS1vdmVyCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCkBAIC0yMiw5ICsyMDQsOSBAQCBzb3VyY2UtaW4KIFBBU1MK
IFBBU1MKIFBBU1MKLVVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAwLDAsMCwwIGFj
dHVhbDogMjU1LDAsMCwyNTUKIFBBU1MKLVVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVk
OiAwLDAsMCwwIGFjdHVhbDogMCwyNTUsMCwyNTUKK1BBU1MKK1BBU1MKIFBBU1MKIFBBU1MKIFBB
U1MKQEAgLTM4LDkgKzIyMCw5IEBAIHNvdXJjZS1vdXQKIFBBU1MKIFBBU1MKIFBBU1MKLVVuZXhw
ZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAwLDAsMCwwIGFjdHVhbDogMjU1LDAsMCwyNTUK
IFBBU1MKLVVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAwLDAsMCwwIGFjdHVhbDog
MCwyNTUsMCwyNTUKK1BBU1MKK1BBU1MKIFBBU1MKIFBBU1MKIFBBU1MKQEAgLTg2LDkgKzI2OCw5
IEBAIGRlc3RpbmF0aW9uLWluCiBQQVNTCiBQQVNTCiBQQVNTCi1VbmV4cGVjdGVkIGNvbXBvc2l0
aW9uISBleHBlY3RlZDogMCwwLDAsMCBhY3R1YWw6IDI1NSwwLDAsMjU1CiBQQVNTCi1VbmV4cGVj
dGVkIGNvbXBvc2l0aW9uISBleHBlY3RlZDogMCwwLDAsMCBhY3R1YWw6IDAsMjU1LDAsMjU1CitQ
QVNTCitQQVNTCiBQQVNTCiBQQVNTCiBQQVNTCkBAIC0xMTgsOSArMzAwLDkgQEAgZGVzdGluYXRp
b24tYXRvcAogUEFTUwogUEFTUwogUEFTUwotVW5leHBlY3RlZCBjb21wb3NpdGlvbiEgZXhwZWN0
ZWQ6IDAsMCwwLDAgYWN0dWFsOiAyNTUsMCwwLDI1NQogUEFTUwotVW5leHBlY3RlZCBjb21wb3Np
dGlvbiEgZXhwZWN0ZWQ6IDAsMCwwLDAgYWN0dWFsOiAwLDI1NSwwLDI1NQorUEFTUworUEFTUwog
UEFTUwogUEFTUwogUEFTUwpAQCAtMTUwLDkgKzMzMiw5IEBAIGNvcHkKIFBBU1MKIFBBU1MKIFBB
U1MKLVVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAwLDAsMCwwIGFjdHVhbDogMjU1
LDAsMCwyNTUKIFBBU1MKLVVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAwLDAsMCww
IGFjdHVhbDogMCwyNTUsMCwyNTUKK1BBU1MKK1BBU1MKIFBBU1MKIFBBU1MKIFBBU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbApp
bmRleCBjNmVhNGEwLi41ZWUzM2I2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtY29tcG9zaXRlLWFscGhhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWNvbXBvc2l0ZS1hbHBoYS5odG1sCkBAIC0yMzgsNyArMjM4LDcgQEAKICAgICAg
ICAgICByZXR1cm4gInJnYmEoIiArIFthWzBdLCBhWzFdLCBhWzJdLCBhWzNdIC8gMjU1LjBdLmpv
aW4oIiwiKSArICIpIjsKICAgICAgIH0KIAotICAgICAgZnVuY3Rpb24gZHJhdygpCisgICAgICBm
dW5jdGlvbiBkcmF3VGFibGUoZHJhd1BvbGljeSkKICAgICAgIHsKICAgICAgICAgICB2YXIgdGFi
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKIApAQCAtMjY3LDYg
KzI2Nyw5IEBACiAgICAgICAgICAgfQogCiAgICAgICAgICAgdmFyIHJlc3VsdHNFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKTsKKyAgICAgICAgICB2YXIgdGl0bGVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKTsKKyAgICAgICAgICB0aXRsZUVs
ZW1lbnQudGV4dENvbnRlbnQgPSAiVGVzdHMgZm9yICIgKyBkcmF3UG9saWN5Lm5hbWU7CisgICAg
ICAgICAgcmVzdWx0c0VsZW1lbnQuYXBwZW5kQ2hpbGQodGl0bGVFbGVtZW50KTsKICAgICAgICAg
ICByZXN1bHRzRWxlbWVudC5hcHBlbmRDaGlsZCh0YWJsZUVsZW1lbnQpOwogCiAgICAgICAgICAg
Zm9yICh2YXIgcm93ID0gMDsgcm93IDwgY29tcG9zaXRlVHlwZXMubGVuZ3RoOyByb3crKyl7CkBA
IC0zMTIsNDEgKzMxNSw1MCBAQAogICAgICAgICAgICAgICAgICAgdmFyIGN0eCA9IGV4cGVjdGVk
Q2FudmFzRWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICAgICAgICAgLy8gRHJh
dyBleHBlY3RlZCBpbWFnZS4KICAgICAgICAgICAgICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVP
cGVyYXRpb24gPSAiY29weSI7Ci0gICAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZ2V0
UkdCQVN0cmluZyhleHBlY3RlZENvbG9yLnNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICBjdHgu
ZmlsbFJlY3QoMCwgMCwgMjAsIDIwKTsKICAgICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUg
PSBnZXRSR0JBU3RyaW5nKGV4cGVjdGVkQ29sb3IuZGVzdGluYXRpb24pOwotICAgICAgICAgICAg
ICAgICAgY3R4LmZpbGxSZWN0KDUsIDUsIDIwLCAyMCk7CisgICAgICAgICAgICAgICAgICBjdHgu
c3Ryb2tlU3R5bGUgPSBnZXRSR0JBU3RyaW5nKGV4cGVjdGVkQ29sb3IuZGVzdGluYXRpb24pOwor
ICAgICAgICAgICAgICAgICAgZHJhd1BvbGljeS5kcmF3RGVzdGluYXRpb24oY3R4KTsKKyAgICAg
ICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBnZXRSR0JBU3RyaW5nKGV4cGVjdGVkQ29sb3Iu
c291cmNlKTsKKyAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGdldFJHQkFTdHJp
bmcoZXhwZWN0ZWRDb2xvci5zb3VyY2UpOworICAgICAgICAgICAgICAgICAgZHJhd1BvbGljeS5k
cmF3U291cmNlKGN0eCk7CiAgICAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZ2V0UkdC
QVN0cmluZyhleHBlY3RlZENvbG9yLmNvbXBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICAgIGN0
eC5maWxsUmVjdCg1LCA1LCAxNSwgMTUpOworICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0
eWxlID0gZ2V0UkdCQVN0cmluZyhleHBlY3RlZENvbG9yLmNvbXBvc2l0aW9uKTsKKyAgICAgICAg
ICAgICAgICAgIGRyYXdQb2xpY3kuZHJhd0NvbXBvc2l0aW9uKGN0eCk7CiAKICAgICAgICAgICAg
ICAgICAgIGN0eCA9IGFjdHVhbENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKIAogICAg
ICAgICAgICAgICAgICAgLy8gRHJhdyBkZXN0aW5hdGlvbiByZWN0YW5nbGUuCiAgICAgICAgICAg
ICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gImNvcHkiOwogICAgICAgICAg
ICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGdldFJHQkFTdHJpbmcoaW5wdXRDb2xvci5kZXN0aW5h
dGlvbik7Ci0gICAgICAgICAgICAgICAgICBjdHguZmlsbFJlY3QoNSwgNSwgMjAsIDIwKTsKKyAg
ICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGdldFJHQkFTdHJpbmcoaW5wdXRDb2xv
ci5kZXN0aW5hdGlvbik7CisgICAgICAgICAgICAgICAgICBkcmF3UG9saWN5LmRyYXdEZXN0aW5h
dGlvbihjdHgpOwogCiAgICAgICAgICAgICAgICAgICAvLyBEcmF3IHNvdXJjZSByZWN0YW5nbGUu
CiAgICAgICAgICAgICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gdHlwZTsK
ICAgICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBnZXRSR0JBU3RyaW5nKGlucHV0Q29s
b3Iuc291cmNlKTsKLSAgICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAyMCwgMjAp
OworICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gZ2V0UkdCQVN0cmluZyhpbnB1
dENvbG9yLnNvdXJjZSk7CisgICAgICAgICAgICAgICAgICBkcmF3UG9saWN5LmRyYXdTb3VyY2Uo
Y3R4KTsKIAogICAgICAgICAgICAgICAgICAgLy8gTGV0J3MgY2hlY2sgaWYgdGhlIHJlc3VsdHMg
YXJlIGV4cGVjdGVkIG9yIG5vdC4KKyAgICAgICAgICAgICAgICAgIHZhciBlcnJvclN1ZmZpeCA9
ICIsIGNvbXBvc2l0ZSB0eXBlOiAiICsgdHlwZSArICIsIHNvdXJjZTogIiArIGlucHV0Q29sb3Iu
c291cmNlICsgIiwgZGVzdGluYXRpb246ICIgKyBpbnB1dENvbG9yLmRlc3RpbmF0aW9uICsgIjxi
cj4iOworCiAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9ICIiOwotICAgICAgICAgICAg
ICAgICAgdmFyIGltZyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkuZGF0YTsKKyAgICAg
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCAoMCwgMCkgbWF5IGJlIGFmZmVjdGVkIGJ5IGFudGkt
YWxpYXMuCisgICAgICAgICAgICAgICAgICB2YXIgaW1nID0gY3R4LmdldEltYWdlRGF0YSgxLCAx
LCAxLCAxKS5kYXRhOwogICAgICAgICAgICAgICAgICAgdmFyIGFjdHVhbENvbG9yID0gW2ltZ1sw
XSwgaW1nWzFdLCBpbWdbMl0sIGltZ1szXV07CiAgICAgICAgICAgICAgICAgICBpZiAoaXNEaWZm
ZXJlbnRDb2xvcihhY3R1YWxDb2xvciwgZXhwZWN0ZWRDb2xvci5zb3VyY2UpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0cyArPSAiVW5leHBlY3RlZCBzb3VyY2UhIGV4cGVjdGVkOiAi
ICsgZXhwZWN0ZWRDb2xvci5zb3VyY2UgKyAiIGFjdHVhbDogIiArIGFjdHVhbENvbG9yICsgIjxi
cj4iOworICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgKz0gIlVuZXhwZWN0ZWQgc291cmNl
ISBleHBlY3RlZDogIiArIGV4cGVjdGVkQ29sb3Iuc291cmNlICsgIiBhY3R1YWw6ICIgKyBhY3R1
YWxDb2xvciArIGVycm9yU3VmZml4OwogICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgaW1nID0gY3R4LmdldEltYWdlRGF0YSgyNCwgMjQsIDEsIDEpLmRhdGE7CisgICAgICAg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgKDI0LCAyNCkgbWF5IGJlIGFmZmVjdGVkIGJ5IGFudGkt
YWxpYXMuCisgICAgICAgICAgICAgICAgICBpbWcgPSBjdHguZ2V0SW1hZ2VEYXRhKDIzLCAyMywg
MSwgMSkuZGF0YTsKICAgICAgICAgICAgICAgICAgIGFjdHVhbENvbG9yID0gW2ltZ1swXSwgaW1n
WzFdLCBpbWdbMl0sIGltZ1szXV07CiAgICAgICAgICAgICAgICAgICBpZiAoaXNEaWZmZXJlbnRD
b2xvcihhY3R1YWxDb2xvciwgZXhwZWN0ZWRDb2xvci5kZXN0aW5hdGlvbikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRzICs9ICJVbmV4cGVjdGVkIGRlc3RpbmF0aW9uISBleHBlY3Rl
ZDogIiArIGV4cGVjdGVkQ29sb3IuZGVzdGluYXRpb24gKyAiIGFjdHVhbDogIiArIGFjdHVhbENv
bG9yICsgIjxicj4iOworICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgKz0gIlVuZXhwZWN0
ZWQgZGVzdGluYXRpb24hIGV4cGVjdGVkOiAiICsgZXhwZWN0ZWRDb2xvci5kZXN0aW5hdGlvbiAr
ICIgYWN0dWFsOiAiICsgYWN0dWFsQ29sb3IgKyBlcnJvclN1ZmZpeDsKICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgIGltZyA9IGN0eC5nZXRJbWFnZURhdGEoMTIsIDEyLCAx
LCAxKS5kYXRhOwogICAgICAgICAgICAgICAgICAgYWN0dWFsQ29sb3IgPSBbaW1nWzBdLCBpbWdb
MV0sIGltZ1syXSwgaW1nWzNdXTsKICAgICAgICAgICAgICAgICAgIGlmIChpc0RpZmZlcmVudENv
bG9yKGFjdHVhbENvbG9yLCBleHBlY3RlZENvbG9yLmNvbXBvc2l0aW9uKSkgewotICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdHMgKz0gIlVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVk
OiAiICsgZXhwZWN0ZWRDb2xvci5jb21wb3NpdGlvbiArICIgYWN0dWFsOiAiICsgYWN0dWFsQ29s
b3IgKyAiPGJyPiI7CisgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyArPSAiVW5leHBlY3Rl
ZCBjb21wb3NpdGlvbiEgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZENvbG9yLmNvbXBvc2l0aW9uICsg
IiBhY3R1YWw6ICIgKyBhY3R1YWxDb2xvciArIGVycm9yU3VmZml4OwogICAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0cyA9PSAiIikgewpAQCAtMzY3LDcg
KzM3OSw2MCBAQAogICAgICAgICAgICAgICAgICAgZGVidWdUZXh0LnZhbHVlICs9IGltZ1swXSAr
ICIsIiArIGltZ1sxXSArICIsIiArIGltZ1syXSArICIsIiArIGltZ1szXSArICJcbiI7CiAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHZhciB1c2VGaWxsUmVj
dCA9IHsKKyAgICAgICAgICBkcmF3U291cmNlOiBmdW5jdGlvbihjdHgpIHsKKyAgICAgICAgICAg
ICAgY3R4LmZpbGxSZWN0KDAsIDAsIDIwLCAyMCk7CisgICAgICAgICAgfSwKKworICAgICAgICAg
IGRyYXdEZXN0aW5hdGlvbjogZnVuY3Rpb24oY3R4KSB7CisgICAgICAgICAgICAgIGN0eC5maWxs
UmVjdCg1LCA1LCAyMCwgMjApOworICAgICAgICAgIH0sCisKKyAgICAgICAgICBkcmF3Q29tcG9z
aXRpb246IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICAgICAgICBjdHguZmlsbFJlY3QoNSwgNSwg
MTUsIDE1KTsKKyAgICAgICAgICB9LAogCisgICAgICAgICAgbmFtZTogImZpbGwgcmVjdCIKKyAg
ICAgIH07CisKKyAgICAgIHZhciB1c2VQYXRoQW5kRmlsbCA9IHsKKyAgICAgICAgICBkcmF3U291
cmNlOiBmdW5jdGlvbihjdHgpIHsKKyAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOworICAg
ICAgICAgICAgICBjdHgubW92ZVRvKDAsIDApOworICAgICAgICAgICAgICBjdHgubGluZVRvKDE1
LCAwKTsKKyAgICAgICAgICAgICAgY3R4LmxpbmVUbygxNSwgMTUpOworICAgICAgICAgICAgICBj
dHgubGluZVRvKDUsIDE1KTsKKyAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOworICAgICAg
ICAgICAgICBjdHguZmlsbCgpOworICAgICAgICAgIH0sCisKKyAgICAgICAgICBkcmF3RGVzdGlu
YXRpb246IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7Cisg
ICAgICAgICAgICAgIGN0eC5tb3ZlVG8oMjUsIDI1KTsKKyAgICAgICAgICAgICAgY3R4LmxpbmVU
bygxMCwgMjUpOworICAgICAgICAgICAgICBjdHgubGluZVRvKDEwLCAxMCk7CisgICAgICAgICAg
ICAgIGN0eC5saW5lVG8oMjAsIDEwKTsKKyAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwor
ICAgICAgICAgICAgICBjdHguZmlsbCgpOworICAgICAgICAgIH0sCisKKyAgICAgICAgICBkcmF3
Q29tcG9zaXRpb246IGZ1bmN0aW9uKGN0eCkgeworICAgICAgICAgICAgICBjdHguZmlsbFJlY3Qo
MTAsIDEwLCA1LCA1KTsKKworICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgICAg
ICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKKyAgICAg
ICAgICB9LAorCisgICAgICAgICAgbmFtZTogInBhdGggYW5kIGZpbGwiCisgICAgICB9OworCisg
ICAgICBmdW5jdGlvbiBkcmF3KCkKKyAgICAgIHsKKyAgICAgICAgICBkcmF3VGFibGUodXNlRmls
bFJlY3QpOworICAgICAgICAgIGRyYXdUYWJsZSh1c2VQYXRoQW5kRmlsbCk7CiAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIDwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZh
cy1jb21wb3NpdGUtYWxwaGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2Zhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTVjY2M5Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi1UaGlzIHRlc3QgZXhlcmNpc2Vz
IGEgYnVuY2ggb2YgY29sb3IgY29tcG9zaXRpb24gd2l0aCBhbHBoYSBibGVuZGluZy4gVGhlIHRv
cC1sZWZ0IHJlY3RhbmdsZXMgYXJlIHRoZSBzb3VyY2UgaW1hZ2VzIGFuZCBib3R0b20tcmlnaHQg
cmVjdGFuZ2xlcyBhcmUgdGhlIGRlc3RpbmF0aW9uIGltYWdlcy4KLQotc3JjIDI1NSwgMCwgMCwg
MjU1CXNyYyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1LCAwLCAwLCAyNTUJc3JjIDAsIDI1NSwgMCwg
MAlzcmMgMCwgMjU1LCAwLCAxCXNyYyAyNTUsIDAsIDAsIDAJc3JjIDI1NSwgMCwgMCwgMTI3CXNy
YyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1LCAwLCAwLCAxMjcJc3JjIDEyNywgMCwgMCwgMjU1CXNy
YyAxMjcsIDAsIDAsIDEyNwlzcmMgMjU1LCAwLCAwLCAxMjcJc3JjIDI1NSwgMTI3LCAwLCAzMglz
cmMgMjU1LCAwLCAwLCAxOTEJc3JjIDI1NSwgMCwgMjU1LCAxOTEKLWRzdCAwLCAyNTUsIDAsIDI1
NQlkc3QgMCwgMjU1LCAwLCAwCWRzdCAwLCAyNTUsIDAsIDEJZHN0IDI1NSwgMCwgMCwgMjU1CWRz
dCAyNTUsIDAsIDAsIDI1NQlkc3QgMCwgMjU1LCAwLCAyNTUJZHN0IDAsIDI1NSwgMCwgMTI3CWRz
dCAwLCAyNTUsIDAsIDEyNwlkc3QgMCwgMjU1LCAwLCAyNTUJZHN0IDAsIDEyNywgMCwgMTI3CWRz
dCAwLCAxMjcsIDAsIDI1NQlkc3QgMjU1LCAwLCAwLCA2Mwlkc3QgMjU1LCA2MywgMCwgNjMJZHN0
IDAsIDI1NSwgMCwgMTI3CWRzdCAwLCAyNTUsIDI1NSwgMTI3Ci1zb3VyY2Utb3ZlcgkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFT
UwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwot
c291cmNlLWluCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCi1QQVNTCi1QQVNTCi1QQVNT
Ci1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1Q
QVNTCi1QQVNTCi1QQVNTCi1zb3VyY2Utb3V0CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
Ci1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1Q
QVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1zb3VyY2UtYXRvcAkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwot
UEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotZGVz
dGluYXRpb24tb3ZlcgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQotUEFTUwotUEFTUwot
UEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFT
UwotUEFTUwotUEFTUwotUEFTUwotZGVzdGluYXRpb24taW4JCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLWRlc3RpbmF0aW9uLW91
dAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwot
UEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFT
UwotUEFTUwotZGVzdGluYXRpb24tYXRvcAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQot
UEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFT
UwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotbGlnaHRlcgkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwot
UEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotY29weQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwot
UEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFT
UwoteG9yCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCi1QQVNTCi1QQVNTCi1QQVNTCi1Q
QVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNT
Ci1QQVNTCi1QQVNTCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKaW5kZXggNGJiMzgxOC4uM2M2ZDY2ZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTEyMCwx
MCArMTIwLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwog
Ci0gICAgaWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCi0gICAgICAgIENHQ29udGV4dEZpbGxSZWN0
KGNvbnRleHQsIHJlY3QpOworICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwog
Ci0gICAgaWYgKHN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2UgJiYgc3Ryb2tlQ29sb3IoKS5hbHBo
YSgpKSB7CisgICAgaWYgKHN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2UpIHsKICAgICAgICAgLy8g
V2UgZG8gYSBmaWxsIG9mIGZvdXIgcmVjdHMgdG8gc2ltdWxhdGUgdGhlIHN0cm9rZSBvZiBhIGJv
cmRlci4KICAgICAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7CiAgICAgICAg
IGlmIChvbGRGaWxsQ29sb3IgIT0gc3Ryb2tlQ29sb3IoKSkKQEAgLTE0Niw3ICsxNDUsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBvaW50MSwgY29u
c3QgSW50UG9pbnQmIHBvaW50MikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoc3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSB8fCAhc3Ryb2tl
Q29sb3IoKS5hbHBoYSgpKQorICAgIGlmIChzdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBmbG9hdCB3aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwpAQCAt
MjgxLDcgKzI4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RWxsaXBzZShjb25zdCBJ
bnRSZWN0JiByZWN0KQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcGFuKQogeyAKLSAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UgfHwgc3Ryb2tl
VGhpY2tuZXNzKCkgPD0gMC4wZiB8fCAhc3Ryb2tlQ29sb3IoKS5hbHBoYSgpKQorICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkgfHwgc3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSB8fCBzdHJva2VU
aGlja25lc3MoKSA8PSAwLjBmKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTM3MCw3ICszNjksNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdGFy
dEFuZ2xlLCBpbnQgYW5nbGVTcAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBv
bHlnb24oc2l6ZV90IG5wb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBhbnRp
YWxpYXNlZCkKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFmaWxsQ29sb3IoKS5h
bHBoYSgpICYmIChzdHJva2VUaGlja25lc3MoKSA8PSAwIHx8IHN0cm9rZVN0eWxlKCkgPT0gTm9T
dHJva2UpKQorICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChucG9pbnRzIDw9IDEpCkBAIC01MjUsOCArNTI0LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXRoKCkKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIHN3aXRjaCAobV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlKSB7CiAg
ICAgY2FzZSBTb2xpZENvbG9yU3BhY2U6Ci0gICAgICAgIGlmIChmaWxsQ29sb3IoKS5hbHBoYSgp
KQotICAgICAgICAgICAgZmlsbFBhdGhXaXRoRmlsbFJ1bGUoY29udGV4dCwgZmlsbFJ1bGUoKSk7
CisgICAgICAgIGZpbGxQYXRoV2l0aEZpbGxSdWxlKGNvbnRleHQsIGZpbGxSdWxlKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBhdHRlcm5Db2xvclNwYWNlOgogICAgICAgICBhcHBseUZp
bGxQYXR0ZXJuKCk7CkBAIC01NTMsOCArNTUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVBhdGgoKQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7
CiAgICAgc3dpdGNoIChtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSkgewogICAgIGNh
c2UgU29saWRDb2xvclNwYWNlOgotICAgICAgICBpZiAoc3Ryb2tlQ29sb3IoKS5hbHBoYSgpKQot
ICAgICAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChjb250ZXh0KTsKKyAgICAgICAgQ0dDb250
ZXh0U3Ryb2tlUGF0aChjb250ZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXR0ZXJu
Q29sb3JTcGFjZToKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CkBAIC01NzgsOCArNTc1
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIHN3
aXRjaCAobV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlKSB7CiAgICAgY2FzZSBTb2xpZENv
bG9yU3BhY2U6Ci0gICAgICAgIGlmIChmaWxsQ29sb3IoKS5hbHBoYSgpKQotICAgICAgICAgICAg
Q0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7CisgICAgICAgIENHQ29udGV4dEZpbGxS
ZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhdHRlcm5Db2xv
clNwYWNlOgogICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7CkBAIC01OTksMjAgKzU5NSwxOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChjb2xvci5hbHBoYSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgIENvbG9yIG9sZEZpbGxDb2xv
ciA9IGZpbGxDb2xvcigpOwotICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yKQotICAg
ICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29sb3IpOwotICAgICAgICBDR0NvbnRl
eHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKLSAgICAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBj
b2xvcikKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvcik7
Ci0gICAgfQorICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7CisgICAgaWYgKG9sZEZpbGxDb2xv
ciAhPSBjb2xvcikKKyAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKKyAgICBD
R0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKKyAgICBpZiAob2xkRmlsbENvbG9yICE9
IGNvbG9yKQorICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29u
c3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0
IENvbG9yJiBjb2xvcikKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFjb2xvci5h
bHBoYSgpKQorICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CkBAIC04MTYsOCAr
ODEwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByLCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5zdHJva2VDb2xvclNwYWNl
KSB7CiAgICAgY2FzZSBTb2xpZENvbG9yU3BhY2U6Ci0gICAgICAgIGlmIChzdHJva2VDb2xvcigp
LmFscGhhKCkpCi0gICAgICAgICAgICBDR0NvbnRleHRTdHJva2VSZWN0V2l0aFdpZHRoKGNvbnRl
eHQsIHIsIGxpbmVXaWR0aCk7CisgICAgICAgIENHQ29udGV4dFN0cm9rZVJlY3RXaXRoV2lkdGgo
Y29udGV4dCwgciwgbGluZVdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXR0ZXJu
Q29sb3JTcGFjZToKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CkBAIC0xMjMzLDQgKzEy
MjYsMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZU9wZXJhdG9yIG1vZGUpCiAjZW5kaWYKIAogfQotCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggYzA2NTNh
ZS4uMzNjYTIzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dFNraWEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcApAQCAtNDQ5LDEwICs0NDksOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywKICAgICAgICAg
cmV0dXJuOwogCiAgICAgU2tQYWludCBwYWludDsKLSAgICBpZiAoZmlsbENvbG9yKCkuYWxwaGEo
KSA+IDApIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JGaWxsaW5n
KCZwYWludCk7Ci0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJhd1BhdGgo
cGF0aCwgcGFpbnQpOwotICAgIH0KKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZv
ckZpbGxpbmcoJnBhaW50KTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmRyYXdQ
YXRoKHBhdGgsIHBhaW50KTsKIAogICAgIGlmIChzdHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlKSB7
CiAgICAgICAgIHBhaW50LnJlc2V0KCk7CkBAIC00NzIsMTAgKzQ3MCw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3RWxsaXBzZShjb25zdCBJbnRSZWN0JiBlbGlwc2VSZWN0KQogICAgICAg
ICByZXR1cm47CiAKICAgICBTa1BhaW50IHBhaW50OwotICAgIGlmIChmaWxsQ29sb3IoKS5hbHBo
YSgpID4gMCkgewotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvckZpbGxp
bmcoJnBhaW50KTsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5kcmF3T3Zh
bChyZWN0LCBwYWludCk7Ci0gICAgfQorICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50
Rm9yRmlsbGluZygmcGFpbnQpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJh
d092YWwocmVjdCwgcGFpbnQpOwogCiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2Up
IHsKICAgICAgICAgcGFpbnQucmVzZXQoKTsKQEAgLTY4NSw5ICs2ODEsNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgoKQogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSA9IG1fY29tbW9uLT5zdGF0ZTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdGF0
ZS5maWxsQ29sb3JTcGFjZTsKIAotICAgIGlmIChjb2xvclNwYWNlID09IFNvbGlkQ29sb3JTcGFj
ZSAmJiAhZmlsbENvbG9yKCkuYWxwaGEoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgcGF0aC5z
ZXRGaWxsVHlwZShzdGF0ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5PREQgPwogICAgICAgICBTa1Bh
dGg6OmtFdmVuT2RkX0ZpbGxUeXBlIDogU2tQYXRoOjprV2luZGluZ19GaWxsVHlwZSk7CiAKQEAg
LTcxOCw5ICs3MTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSA9IG1f
Y29tbW9uLT5zdGF0ZTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdGF0ZS5maWxsQ29s
b3JTcGFjZTsKIAotICAgIGlmIChjb2xvclNwYWNlID09IFNvbGlkQ29sb3JTcGFjZSAmJiAhZmls
bENvbG9yKCkuYWxwaGEoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgU2tQYWludCBwYWludDsK
ICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKIApA
QCAtNzM5LDkgKzcyOSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWNvbG9yLmFscGhhKCkpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIFNrUmVjdCByID0gcmVjdDsKICAgICBpZiAoIWlzUmVjdFNraWFT
YWZlKGdldENUTSgpLCByKSkgewogICAgICAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlbiB0aGUgcmVj
dGFuZ2xlIG92ZXJmbG93cyBmaXhlZCBwb2ludC4gVGhpcyBpcyBhCkBAIC0xMDg3LDkgKzEwNzQs
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCgpCiAgICAgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlID0gbV9jb21tb24tPnN0YXRlOwogICAgIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSA9IHN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7CiAKLSAgICBpZiAoY29sb3JTcGFj
ZSA9PSBTb2xpZENvbG9yU3BhY2UgJiYgIXN0cm9rZUNvbG9yKCkuYWxwaGEoKSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgU2tQYWludCBwYWludDsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0
dXBQYWludEZvclN0cm9raW5nKCZwYWludCwgMCwgMCk7CiAKQEAgLTExMTQsOSArMTA5OCw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgbGluZVdpZHRoKQogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSA9
IG1fY29tbW9uLT5zdGF0ZTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdGF0ZS5zdHJv
a2VDb2xvclNwYWNlOwogCi0gICAgaWYgKGNvbG9yU3BhY2UgPT0gU29saWRDb2xvclNwYWNlICYm
ICFzdHJva2VDb2xvcigpLmFscGhhKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFNrUGFpbnQg
cGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JTdHJva2luZygmcGFp
bnQsIDAsIDApOwogICAgIHBhaW50LnNldFN0cm9rZVdpZHRoKFdlYkNvcmVGbG9hdFRvU2tTY2Fs
YXIobGluZVdpZHRoKSk7Cg==
</data>
<flag name="review"
          id="15461"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30578</attachid>
            <date>2009-05-22 03:54:42 -0700</date>
            <delta_ts>2009-05-22 03:54:42 -0700</delta_ts>
            <desc>Remove optimization path alpha=0 case from GraphicContext(CG|Skia)</desc>
            <filename>Remove-optimization-path-alpha-0-case-from-GraphicContext-CG-Skia-.patch</filename>
            <type>text/plain</type>
            <size>22994</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">MGJlM2M4MzFkZTE4ZDBlOTFiOGM2ZmFlNGM2NmVhM2ZhOWVmODEwOApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM5Y2MyODUu
LmQyMzA1YjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNS0yMiAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgb3B0aW1pemF0aW9uIHBhdGggYWxwaGE9MCBjYXNl
IGZyb20gR3JhcGhpY0NvbnRleHQoQ0d8U2tpYSkuIFRoaXMgb3B0aW1pemF0aW9uIGRvZXNuJ3Qg
bWFrZSBzZW5zZSBmb3Igc29tZSBjb21wb3NpdGUgbW9kZSAoZS5nLiwgJ2NvcHknIG9wZXJhdGlv
bikuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
OTU2CisgICAgICAgIAorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxw
aGEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUt
YWxwaGEuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2FudmFzLWNv
bXBvc2l0ZS1hbHBoYS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMDktMDUtMjEgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWog
U3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1j
b21wb3NpdGUtYWxwaGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWNvbXBvc2l0ZS1hbHBoYS1leHBlY3RlZC50eHQKaW5kZXggYzQzODg1MC4uN2FiYTA2ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1hbHBo
YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbXBv
c2l0ZS1hbHBoYS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwxODcgQEAKIFRoaXMgdGVzdCBleGVy
Y2lzZXMgYSBidW5jaCBvZiBjb2xvciBjb21wb3NpdGlvbiB3aXRoIGFscGhhIGJsZW5kaW5nLiBU
aGUgdG9wLWxlZnQgcmVjdGFuZ2xlcyBhcmUgdGhlIHNvdXJjZSBpbWFnZXMgYW5kIGJvdHRvbS1y
aWdodCByZWN0YW5nbGVzIGFyZSB0aGUgZGVzdGluYXRpb24gaW1hZ2VzLgogCitUZXN0cyBmb3Ig
ZmlsbCByZWN0CisKK3NyYyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1LCAwLCAwLCAyNTUJc3JjIDI1
NSwgMCwgMCwgMjU1CXNyYyAwLCAyNTUsIDAsIDAJc3JjIDAsIDI1NSwgMCwgMQlzcmMgMjU1LCAw
LCAwLCAwCXNyYyAyNTUsIDAsIDAsIDEyNwlzcmMgMjU1LCAwLCAwLCAyNTUJc3JjIDI1NSwgMCwg
MCwgMTI3CXNyYyAxMjcsIDAsIDAsIDI1NQlzcmMgMTI3LCAwLCAwLCAxMjcJc3JjIDI1NSwgMCwg
MCwgMTI3CXNyYyAyNTUsIDEyNywgMCwgMzIJc3JjIDI1NSwgMCwgMCwgMTkxCXNyYyAyNTUsIDAs
IDI1NSwgMTkxCitkc3QgMCwgMjU1LCAwLCAyNTUJZHN0IDAsIDI1NSwgMCwgMAlkc3QgMCwgMjU1
LCAwLCAxCWRzdCAyNTUsIDAsIDAsIDI1NQlkc3QgMjU1LCAwLCAwLCAyNTUJZHN0IDAsIDI1NSwg
MCwgMjU1CWRzdCAwLCAyNTUsIDAsIDEyNwlkc3QgMCwgMjU1LCAwLCAxMjcJZHN0IDAsIDI1NSwg
MCwgMjU1CWRzdCAwLCAxMjcsIDAsIDEyNwlkc3QgMCwgMTI3LCAwLCAyNTUJZHN0IDI1NSwgMCwg
MCwgNjMJZHN0IDI1NSwgNjMsIDAsIDYzCWRzdCAwLCAyNTUsIDAsIDEyNwlkc3QgMCwgMjU1LCAy
NTUsIDEyNworc291cmNlLW92ZXIJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK3NvdXJjZS1pbgkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworc291cmNlLW91dAkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwor
UEFTUworc291cmNlLWF0b3AJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKK1BBU1MKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK2Rlc3RpbmF0aW9uLW92ZXIJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK2Rlc3RpbmF0
aW9uLWluCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCitkZXN0aW5hdGlvbi1vdXQJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK2Rlc3RpbmF0aW9uLWF0b3AJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKK2xpZ2h0ZXIJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK2NvcHkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK3hvcgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworVGVzdHMgZm9yIHBhdGgg
YW5kIGZpbGwKKwogc3JjIDI1NSwgMCwgMCwgMjU1CXNyYyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1
LCAwLCAwLCAyNTUJc3JjIDAsIDI1NSwgMCwgMAlzcmMgMCwgMjU1LCAwLCAxCXNyYyAyNTUsIDAs
IDAsIDAJc3JjIDI1NSwgMCwgMCwgMTI3CXNyYyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1LCAwLCAw
LCAxMjcJc3JjIDEyNywgMCwgMCwgMjU1CXNyYyAxMjcsIDAsIDAsIDEyNwlzcmMgMjU1LCAwLCAw
LCAxMjcJc3JjIDI1NSwgMTI3LCAwLCAzMglzcmMgMjU1LCAwLCAwLCAxOTEJc3JjIDI1NSwgMCwg
MjU1LCAxOTEKIGRzdCAwLCAyNTUsIDAsIDI1NQlkc3QgMCwgMjU1LCAwLCAwCWRzdCAwLCAyNTUs
IDAsIDEJZHN0IDI1NSwgMCwgMCwgMjU1CWRzdCAyNTUsIDAsIDAsIDI1NQlkc3QgMCwgMjU1LCAw
LCAyNTUJZHN0IDAsIDI1NSwgMCwgMTI3CWRzdCAwLCAyNTUsIDAsIDEyNwlkc3QgMCwgMjU1LCAw
LCAyNTUJZHN0IDAsIDEyNywgMCwgMTI3CWRzdCAwLCAxMjcsIDAsIDI1NQlkc3QgMjU1LCAwLCAw
LCA2Mwlkc3QgMjU1LCA2MywgMCwgNjMJZHN0IDAsIDI1NSwgMCwgMTI3CWRzdCAwLCAyNTUsIDI1
NSwgMTI3CiBzb3VyY2Utb3ZlcgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQpAQCAtMjIs
OSArMjA0LDkgQEAgc291cmNlLWluCiBQQVNTCiBQQVNTCiBQQVNTCi1VbmV4cGVjdGVkIGNvbXBv
c2l0aW9uISBleHBlY3RlZDogMCwwLDAsMCBhY3R1YWw6IDI1NSwwLDAsMjU1CiBQQVNTCi1VbmV4
cGVjdGVkIGNvbXBvc2l0aW9uISBleHBlY3RlZDogMCwwLDAsMCBhY3R1YWw6IDAsMjU1LDAsMjU1
CitQQVNTCitQQVNTCiBQQVNTCiBQQVNTCiBQQVNTCkBAIC0zOCw5ICsyMjAsOSBAQCBzb3VyY2Ut
b3V0CiBQQVNTCiBQQVNTCiBQQVNTCi1VbmV4cGVjdGVkIGNvbXBvc2l0aW9uISBleHBlY3RlZDog
MCwwLDAsMCBhY3R1YWw6IDI1NSwwLDAsMjU1CiBQQVNTCi1VbmV4cGVjdGVkIGNvbXBvc2l0aW9u
ISBleHBlY3RlZDogMCwwLDAsMCBhY3R1YWw6IDAsMjU1LDAsMjU1CitQQVNTCitQQVNTCiBQQVNT
CiBQQVNTCiBQQVNTCkBAIC04Niw5ICsyNjgsOSBAQCBkZXN0aW5hdGlvbi1pbgogUEFTUwogUEFT
UwogUEFTUwotVW5leHBlY3RlZCBjb21wb3NpdGlvbiEgZXhwZWN0ZWQ6IDAsMCwwLDAgYWN0dWFs
OiAyNTUsMCwwLDI1NQogUEFTUwotVW5leHBlY3RlZCBjb21wb3NpdGlvbiEgZXhwZWN0ZWQ6IDAs
MCwwLDAgYWN0dWFsOiAwLDI1NSwwLDI1NQorUEFTUworUEFTUwogUEFTUwogUEFTUwogUEFTUwpA
QCAtMTE4LDkgKzMwMCw5IEBAIGRlc3RpbmF0aW9uLWF0b3AKIFBBU1MKIFBBU1MKIFBBU1MKLVVu
ZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAwLDAsMCwwIGFjdHVhbDogMjU1LDAsMCwy
NTUKIFBBU1MKLVVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAwLDAsMCwwIGFjdHVh
bDogMCwyNTUsMCwyNTUKK1BBU1MKK1BBU1MKIFBBU1MKIFBBU1MKIFBBU1MKQEAgLTE1MCw5ICsz
MzIsOSBAQCBjb3B5CiBQQVNTCiBQQVNTCiBQQVNTCi1VbmV4cGVjdGVkIGNvbXBvc2l0aW9uISBl
eHBlY3RlZDogMCwwLDAsMCBhY3R1YWw6IDI1NSwwLDAsMjU1CiBQQVNTCi1VbmV4cGVjdGVkIGNv
bXBvc2l0aW9uISBleHBlY3RlZDogMCwwLDAsMCBhY3R1YWw6IDAsMjU1LDAsMjU1CitQQVNTCitQ
QVNTCiBQQVNTCiBQQVNTCiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtY29tcG9zaXRlLWFscGhhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtY29tcG9zaXRlLWFscGhhLmh0bWwKaW5kZXggYzZlYTRhMC4uNWVlMzNiNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS1hbHBoYS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRt
bApAQCAtMjM4LDcgKzIzOCw3IEBACiAgICAgICAgICAgcmV0dXJuICJyZ2JhKCIgKyBbYVswXSwg
YVsxXSwgYVsyXSwgYVszXSAvIDI1NS4wXS5qb2luKCIsIikgKyAiKSI7CiAgICAgICB9CiAKLSAg
ICAgIGZ1bmN0aW9uIGRyYXcoKQorICAgICAgZnVuY3Rpb24gZHJhd1RhYmxlKGRyYXdQb2xpY3kp
CiAgICAgICB7CiAgICAgICAgICAgdmFyIHRhYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRhYmxlIik7CiAKQEAgLTI2Nyw2ICsyNjcsOSBAQAogICAgICAgICAgIH0KIAogICAg
ICAgICAgIHZhciByZXN1bHRzRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHRzIik7CisgICAgICAgICAgdmFyIHRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImgxIik7CisgICAgICAgICAgdGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gIlRlc3RzIGZv
ciAiICsgZHJhd1BvbGljeS5uYW1lOworICAgICAgICAgIHJlc3VsdHNFbGVtZW50LmFwcGVuZENo
aWxkKHRpdGxlRWxlbWVudCk7CiAgICAgICAgICAgcmVzdWx0c0VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGFibGVFbGVtZW50KTsKIAogICAgICAgICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGNvbXBv
c2l0ZVR5cGVzLmxlbmd0aDsgcm93KyspewpAQCAtMzEyLDQxICszMTUsNTAgQEAKICAgICAgICAg
ICAgICAgICAgIHZhciBjdHggPSBleHBlY3RlZENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgiMmQi
KTsKICAgICAgICAgICAgICAgICAgIC8vIERyYXcgZXhwZWN0ZWQgaW1hZ2UuCiAgICAgICAgICAg
ICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gImNvcHkiOwotICAgICAgICAg
ICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGdldFJHQkFTdHJpbmcoZXhwZWN0ZWRDb2xvci5zb3Vy
Y2UpOwotICAgICAgICAgICAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDIwLCAyMCk7CiAgICAg
ICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZ2V0UkdCQVN0cmluZyhleHBlY3RlZENvbG9y
LmRlc3RpbmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCg1LCA1LCAyMCwg
MjApOworICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gZ2V0UkdCQVN0cmluZyhl
eHBlY3RlZENvbG9yLmRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgICAgICAgIGRyYXdQb2xpY3ku
ZHJhd0Rlc3RpbmF0aW9uKGN0eCk7CisgICAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0g
Z2V0UkdCQVN0cmluZyhleHBlY3RlZENvbG9yLnNvdXJjZSk7CisgICAgICAgICAgICAgICAgICBj
dHguc3Ryb2tlU3R5bGUgPSBnZXRSR0JBU3RyaW5nKGV4cGVjdGVkQ29sb3Iuc291cmNlKTsKKyAg
ICAgICAgICAgICAgICAgIGRyYXdQb2xpY3kuZHJhd1NvdXJjZShjdHgpOwogICAgICAgICAgICAg
ICAgICAgY3R4LmZpbGxTdHlsZSA9IGdldFJHQkFTdHJpbmcoZXhwZWN0ZWRDb2xvci5jb21wb3Np
dGlvbik7Ci0gICAgICAgICAgICAgICAgICBjdHguZmlsbFJlY3QoNSwgNSwgMTUsIDE1KTsKKyAg
ICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGdldFJHQkFTdHJpbmcoZXhwZWN0ZWRD
b2xvci5jb21wb3NpdGlvbik7CisgICAgICAgICAgICAgICAgICBkcmF3UG9saWN5LmRyYXdDb21w
b3NpdGlvbihjdHgpOwogCiAgICAgICAgICAgICAgICAgICBjdHggPSBhY3R1YWxDYW52YXNFbGVt
ZW50LmdldENvbnRleHQoIjJkIik7CiAKICAgICAgICAgICAgICAgICAgIC8vIERyYXcgZGVzdGlu
YXRpb24gcmVjdGFuZ2xlLgogICAgICAgICAgICAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9w
ZXJhdGlvbiA9ICJjb3B5IjsKICAgICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBnZXRS
R0JBU3RyaW5nKGlucHV0Q29sb3IuZGVzdGluYXRpb24pOwotICAgICAgICAgICAgICAgICAgY3R4
LmZpbGxSZWN0KDUsIDUsIDIwLCAyMCk7CisgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5
bGUgPSBnZXRSR0JBU3RyaW5nKGlucHV0Q29sb3IuZGVzdGluYXRpb24pOworICAgICAgICAgICAg
ICAgICAgZHJhd1BvbGljeS5kcmF3RGVzdGluYXRpb24oY3R4KTsKIAogICAgICAgICAgICAgICAg
ICAgLy8gRHJhdyBzb3VyY2UgcmVjdGFuZ2xlLgogICAgICAgICAgICAgICAgICAgY3R4Lmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdGlvbiA9IHR5cGU7CiAgICAgICAgICAgICAgICAgICBjdHguZmlsbFN0
eWxlID0gZ2V0UkdCQVN0cmluZyhpbnB1dENvbG9yLnNvdXJjZSk7Ci0gICAgICAgICAgICAgICAg
ICBjdHguZmlsbFJlY3QoMCwgMCwgMjAsIDIwKTsKKyAgICAgICAgICAgICAgICAgIGN0eC5zdHJv
a2VTdHlsZSA9IGdldFJHQkFTdHJpbmcoaW5wdXRDb2xvci5zb3VyY2UpOworICAgICAgICAgICAg
ICAgICAgZHJhd1BvbGljeS5kcmF3U291cmNlKGN0eCk7CiAKICAgICAgICAgICAgICAgICAgIC8v
IExldCdzIGNoZWNrIGlmIHRoZSByZXN1bHRzIGFyZSBleHBlY3RlZCBvciBub3QuCisgICAgICAg
ICAgICAgICAgICB2YXIgZXJyb3JTdWZmaXggPSAiLCBjb21wb3NpdGUgdHlwZTogIiArIHR5cGUg
KyAiLCBzb3VyY2U6ICIgKyBpbnB1dENvbG9yLnNvdXJjZSArICIsIGRlc3RpbmF0aW9uOiAiICsg
aW5wdXRDb2xvci5kZXN0aW5hdGlvbiArICI8YnI+IjsKKwogICAgICAgICAgICAgICAgICAgdmFy
IHJlc3VsdHMgPSAiIjsKLSAgICAgICAgICAgICAgICAgIHZhciBpbWcgPSBjdHguZ2V0SW1hZ2VE
YXRhKDAsIDAsIDEsIDEpLmRhdGE7CisgICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgKDAs
IDApIG1heSBiZSBhZmZlY3RlZCBieSBhbnRpLWFsaWFzLgorICAgICAgICAgICAgICAgICAgdmFy
IGltZyA9IGN0eC5nZXRJbWFnZURhdGEoMSwgMSwgMSwgMSkuZGF0YTsKICAgICAgICAgICAgICAg
ICAgIHZhciBhY3R1YWxDb2xvciA9IFtpbWdbMF0sIGltZ1sxXSwgaW1nWzJdLCBpbWdbM11dOwog
ICAgICAgICAgICAgICAgICAgaWYgKGlzRGlmZmVyZW50Q29sb3IoYWN0dWFsQ29sb3IsIGV4cGVj
dGVkQ29sb3Iuc291cmNlKSkgewotICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgKz0gIlVu
ZXhwZWN0ZWQgc291cmNlISBleHBlY3RlZDogIiArIGV4cGVjdGVkQ29sb3Iuc291cmNlICsgIiBh
Y3R1YWw6ICIgKyBhY3R1YWxDb2xvciArICI8YnI+IjsKKyAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRzICs9ICJVbmV4cGVjdGVkIHNvdXJjZSEgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZENvbG9y
LnNvdXJjZSArICIgYWN0dWFsOiAiICsgYWN0dWFsQ29sb3IgKyBlcnJvclN1ZmZpeDsKICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGltZyA9IGN0eC5nZXRJbWFnZURhdGEo
MjQsIDI0LCAxLCAxKS5kYXRhOworICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0ICgyNCwg
MjQpIG1heSBiZSBhZmZlY3RlZCBieSBhbnRpLWFsaWFzLgorICAgICAgICAgICAgICAgICAgaW1n
ID0gY3R4LmdldEltYWdlRGF0YSgyMywgMjMsIDEsIDEpLmRhdGE7CiAgICAgICAgICAgICAgICAg
ICBhY3R1YWxDb2xvciA9IFtpbWdbMF0sIGltZ1sxXSwgaW1nWzJdLCBpbWdbM11dOwogICAgICAg
ICAgICAgICAgICAgaWYgKGlzRGlmZmVyZW50Q29sb3IoYWN0dWFsQ29sb3IsIGV4cGVjdGVkQ29s
b3IuZGVzdGluYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyArPSAiVW5l
eHBlY3RlZCBkZXN0aW5hdGlvbiEgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZENvbG9yLmRlc3RpbmF0
aW9uICsgIiBhY3R1YWw6ICIgKyBhY3R1YWxDb2xvciArICI8YnI+IjsKKyAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRzICs9ICJVbmV4cGVjdGVkIGRlc3RpbmF0aW9uISBleHBlY3RlZDogIiAr
IGV4cGVjdGVkQ29sb3IuZGVzdGluYXRpb24gKyAiIGFjdHVhbDogIiArIGFjdHVhbENvbG9yICsg
ZXJyb3JTdWZmaXg7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICBpbWcg
PSBjdHguZ2V0SW1hZ2VEYXRhKDEyLCAxMiwgMSwgMSkuZGF0YTsKICAgICAgICAgICAgICAgICAg
IGFjdHVhbENvbG9yID0gW2ltZ1swXSwgaW1nWzFdLCBpbWdbMl0sIGltZ1szXV07CiAgICAgICAg
ICAgICAgICAgICBpZiAoaXNEaWZmZXJlbnRDb2xvcihhY3R1YWxDb2xvciwgZXhwZWN0ZWRDb2xv
ci5jb21wb3NpdGlvbikpIHsKLSAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzICs9ICJVbmV4
cGVjdGVkIGNvbXBvc2l0aW9uISBleHBlY3RlZDogIiArIGV4cGVjdGVkQ29sb3IuY29tcG9zaXRp
b24gKyAiIGFjdHVhbDogIiArIGFjdHVhbENvbG9yICsgIjxicj4iOworICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdHMgKz0gIlVuZXhwZWN0ZWQgY29tcG9zaXRpb24hIGV4cGVjdGVkOiAiICsg
ZXhwZWN0ZWRDb2xvci5jb21wb3NpdGlvbiArICIgYWN0dWFsOiAiICsgYWN0dWFsQ29sb3IgKyBl
cnJvclN1ZmZpeDsKICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgaWYg
KHJlc3VsdHMgPT0gIiIpIHsKQEAgLTM2Nyw3ICszNzksNjAgQEAKICAgICAgICAgICAgICAgICAg
IGRlYnVnVGV4dC52YWx1ZSArPSBpbWdbMF0gKyAiLCIgKyBpbWdbMV0gKyAiLCIgKyBpbWdbMl0g
KyAiLCIgKyBpbWdbM10gKyAiXG4iOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQorICAg
ICAgfQorCisgICAgICB2YXIgdXNlRmlsbFJlY3QgPSB7CisgICAgICAgICAgZHJhd1NvdXJjZTog
ZnVuY3Rpb24oY3R4KSB7CisgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAyMCwgMjAp
OworICAgICAgICAgIH0sCisKKyAgICAgICAgICBkcmF3RGVzdGluYXRpb246IGZ1bmN0aW9uKGN0
eCkgeworICAgICAgICAgICAgICBjdHguZmlsbFJlY3QoNSwgNSwgMjAsIDIwKTsKKyAgICAgICAg
ICB9LAorCisgICAgICAgICAgZHJhd0NvbXBvc2l0aW9uOiBmdW5jdGlvbihjdHgpIHsKKyAgICAg
ICAgICAgICAgY3R4LmZpbGxSZWN0KDUsIDUsIDE1LCAxNSk7CisgICAgICAgICAgfSwKIAorICAg
ICAgICAgIG5hbWU6ICJmaWxsIHJlY3QiCisgICAgICB9OworCisgICAgICB2YXIgdXNlUGF0aEFu
ZEZpbGwgPSB7CisgICAgICAgICAgZHJhd1NvdXJjZTogZnVuY3Rpb24oY3R4KSB7CisgICAgICAg
ICAgICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgICAgY3R4Lm1vdmVUbygwLCAwKTsK
KyAgICAgICAgICAgICAgY3R4LmxpbmVUbygxNSwgMCk7CisgICAgICAgICAgICAgIGN0eC5saW5l
VG8oMTUsIDE1KTsKKyAgICAgICAgICAgICAgY3R4LmxpbmVUbyg1LCAxNSk7CisgICAgICAgICAg
ICAgIGN0eC5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKKyAgICAgICAg
ICB9LAorCisgICAgICAgICAgZHJhd0Rlc3RpbmF0aW9uOiBmdW5jdGlvbihjdHgpIHsKKyAgICAg
ICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgICBjdHgubW92ZVRvKDI1LCAy
NSk7CisgICAgICAgICAgICAgIGN0eC5saW5lVG8oMTAsIDI1KTsKKyAgICAgICAgICAgICAgY3R4
LmxpbmVUbygxMCwgMTApOworICAgICAgICAgICAgICBjdHgubGluZVRvKDIwLCAxMCk7CisgICAg
ICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKKyAg
ICAgICAgICB9LAorCisgICAgICAgICAgZHJhd0NvbXBvc2l0aW9uOiBmdW5jdGlvbihjdHgpIHsK
KyAgICAgICAgICAgICAgY3R4LmZpbGxSZWN0KDEwLCAxMCwgNSwgNSk7CisKKyAgICAgICAgICAg
ICAgY3R4LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CisgICAg
ICAgICAgICAgIGN0eC5maWxsKCk7CisgICAgICAgICAgfSwKKworICAgICAgICAgIG5hbWU6ICJw
YXRoIGFuZCBmaWxsIgorICAgICAgfTsKKworICAgICAgZnVuY3Rpb24gZHJhdygpCisgICAgICB7
CisgICAgICAgICAgZHJhd1RhYmxlKHVzZUZpbGxSZWN0KTsKKyAgICAgICAgICBkcmF3VGFibGUo
dXNlUGF0aEFuZEZpbGwpOwogICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKICAgICAgIH0KICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLWFscGhhLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRl
LWFscGhhLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE1Y2Nj
OS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2Fu
dmFzLWNvbXBvc2l0ZS1hbHBoYS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxODEg
KzAsMCBAQAotVGhpcyB0ZXN0IGV4ZXJjaXNlcyBhIGJ1bmNoIG9mIGNvbG9yIGNvbXBvc2l0aW9u
IHdpdGggYWxwaGEgYmxlbmRpbmcuIFRoZSB0b3AtbGVmdCByZWN0YW5nbGVzIGFyZSB0aGUgc291
cmNlIGltYWdlcyBhbmQgYm90dG9tLXJpZ2h0IHJlY3RhbmdsZXMgYXJlIHRoZSBkZXN0aW5hdGlv
biBpbWFnZXMuCi0KLXNyYyAyNTUsIDAsIDAsIDI1NQlzcmMgMjU1LCAwLCAwLCAyNTUJc3JjIDI1
NSwgMCwgMCwgMjU1CXNyYyAwLCAyNTUsIDAsIDAJc3JjIDAsIDI1NSwgMCwgMQlzcmMgMjU1LCAw
LCAwLCAwCXNyYyAyNTUsIDAsIDAsIDEyNwlzcmMgMjU1LCAwLCAwLCAyNTUJc3JjIDI1NSwgMCwg
MCwgMTI3CXNyYyAxMjcsIDAsIDAsIDI1NQlzcmMgMTI3LCAwLCAwLCAxMjcJc3JjIDI1NSwgMCwg
MCwgMTI3CXNyYyAyNTUsIDEyNywgMCwgMzIJc3JjIDI1NSwgMCwgMCwgMTkxCXNyYyAyNTUsIDAs
IDI1NSwgMTkxCi1kc3QgMCwgMjU1LCAwLCAyNTUJZHN0IDAsIDI1NSwgMCwgMAlkc3QgMCwgMjU1
LCAwLCAxCWRzdCAyNTUsIDAsIDAsIDI1NQlkc3QgMjU1LCAwLCAwLCAyNTUJZHN0IDAsIDI1NSwg
MCwgMjU1CWRzdCAwLCAyNTUsIDAsIDEyNwlkc3QgMCwgMjU1LCAwLCAxMjcJZHN0IDAsIDI1NSwg
MCwgMjU1CWRzdCAwLCAxMjcsIDAsIDEyNwlkc3QgMCwgMTI3LCAwLCAyNTUJZHN0IDI1NSwgMCwg
MCwgNjMJZHN0IDI1NSwgNjMsIDAsIDYzCWRzdCAwLCAyNTUsIDAsIDEyNwlkc3QgMCwgMjU1LCAy
NTUsIDEyNwotc291cmNlLW92ZXIJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBB
U1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLXNvdXJjZS1pbgkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFT
UwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotc291cmNlLW91dAkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFT
UwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwot
UEFTUwotc291cmNlLWF0b3AJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKLVBBU1MKLVBB
U1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLWRlc3RpbmF0aW9uLW92ZXIJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLWRlc3RpbmF0
aW9uLWluCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCi1QQVNTCi1QQVNTCi1QQVNTCi1Q
QVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNTCi1QQVNT
Ci1QQVNTCi1QQVNTCi1kZXN0aW5hdGlvbi1vdXQJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLWRlc3RpbmF0aW9uLWF0b3AJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBB
U1MKLWxpZ2h0ZXIJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKLVBBU1MKLVBBU1MKLVBB
U1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLWNvcHkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKLVBB
U1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MK
LVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLVBBU1MKLXhvcgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwot
UEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotUEFTUwotCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMzYmM3ZDkuLmZhMmVh
YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMDktMDUtMjIgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWpp
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIG9wdGltaXphdGlvbiBwYXRoIGFscGhhPTAgY2FzZSBmcm9tIEdyYXBoaWND
b250ZXh0KENHfFNraWEpLiBUaGlzIG9wdGltaXphdGlvbiBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9y
IHNvbWUgY29tcG9zaXRlIG1vZGUgKGUuZy4sICdjb3B5JyBvcGVyYXRpb24pLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTk1NgorICAgICAgICAK
KwkqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUFyYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdDb252ZXhQb2x5Z29uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKwogMjAw
OS0wNS0yMSAgU3RlcGhhbmllIExld2lzICA8c2xld2lzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDRiYjM4MTguLjNjNmQ2NmQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBA
IC0xMjAsMTAgKzEyMCw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRl
eHQoKTsKIAotICAgIGlmIChmaWxsQ29sb3IoKS5hbHBoYSgpKQotICAgICAgICBDR0NvbnRleHRG
aWxsUmVjdChjb250ZXh0LCByZWN0KTsKKyAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBy
ZWN0KTsKIAotICAgIGlmIChzdHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlICYmIHN0cm9rZUNvbG9y
KCkuYWxwaGEoKSkgeworICAgIGlmIChzdHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlKSB7CiAgICAg
ICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3RzIHRvIHNpbXVsYXRlIHRoZSBzdHJva2Ug
b2YgYSBib3JkZXIuCiAgICAgICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwog
ICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkpCkBAIC0xNDYsNyArMTQ1
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2lu
dDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UgfHwg
IXN0cm9rZUNvbG9yKCkuYWxwaGEoKSkKKyAgICBpZiAoc3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9r
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgd2lkdGggPSBzdHJva2VUaGlja25lc3Mo
KTsKQEAgLTI4MSw3ICsyODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2Uo
Y29uc3QgSW50UmVjdCYgcmVjdCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhj
b25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3BhbikKIHsgCi0g
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlIHx8
IHN0cm9rZVRoaWNrbmVzcygpIDw9IDAuMGYgfHwgIXN0cm9rZUNvbG9yKCkuYWxwaGEoKSkKKyAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UgfHwg
c3Ryb2tlVGhpY2tuZXNzKCkgPD0gMC4wZikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIENH
Q29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CkBAIC0zNzAsNyArMzY5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBp
bnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b252ZXhQb2x5Z29uKHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMsIGJv
b2wgYW50aWFsaWFzZWQpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhZmlsbENv
bG9yKCkuYWxwaGEoKSAmJiAoc3Ryb2tlVGhpY2tuZXNzKCkgPD0gMCB8fCBzdHJva2VTdHlsZSgp
ID09IE5vU3Ryb2tlKSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobnBvaW50cyA8PSAxKQpAQCAtNTI1LDggKzUyNCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUGF0aCgpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKICAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3JTcGFj
ZSkgewogICAgIGNhc2UgU29saWRDb2xvclNwYWNlOgotICAgICAgICBpZiAoZmlsbENvbG9yKCku
YWxwaGEoKSkKLSAgICAgICAgICAgIGZpbGxQYXRoV2l0aEZpbGxSdWxlKGNvbnRleHQsIGZpbGxS
dWxlKCkpOworICAgICAgICBmaWxsUGF0aFdpdGhGaWxsUnVsZShjb250ZXh0LCBmaWxsUnVsZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXR0ZXJuQ29sb3JTcGFjZToKICAgICAgICAg
YXBwbHlGaWxsUGF0dGVybigpOwpAQCAtNTUzLDggKzU1MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VQYXRoKCkKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIHN3aXRjaCAobV9jb21tb24tPnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UpIHsK
ICAgICBjYXNlIFNvbGlkQ29sb3JTcGFjZToKLSAgICAgICAgaWYgKHN0cm9rZUNvbG9yKCkuYWxw
aGEoKSkKLSAgICAgICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7CisgICAgICAg
IENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UGF0dGVybkNvbG9yU3BhY2U6CiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwpAQCAtNTc4
LDggKzU3NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3JTcGFjZSkgewogICAgIGNhc2Ug
U29saWRDb2xvclNwYWNlOgotICAgICAgICBpZiAoZmlsbENvbG9yKCkuYWxwaGEoKSkKLSAgICAg
ICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOworICAgICAgICBDR0NvbnRl
eHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXR0
ZXJuQ29sb3JTcGFjZToKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwpAQCAtNTk5LDIwICs1
OTUsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoY29sb3IuYWxwaGEoKSkgewotICAgICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwotICAgICAgICBDb2xvciBvbGRG
aWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAgICAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xv
cikKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKLSAgICAgICAg
Q0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7Ci0gICAgICAgIGlmIChvbGRGaWxsQ29s
b3IgIT0gY29sb3IpCi0gICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxs
Q29sb3IpOwotICAgIH0KKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOworICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOworICAgIGlmIChvbGRG
aWxsQ29sb3IgIT0gY29sb3IpCisgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xvcik7
CisgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7CisgICAgaWYgKG9sZEZpbGxD
b2xvciAhPSBjb2xvcikKKyAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xv
cik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
Y29sb3IuYWxwaGEoKSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwpAQCAt
ODE2LDggKzgxMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgciwgZmxvYXQgbGluZVdpZHRoKQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgc3dpdGNoIChtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlQ29s
b3JTcGFjZSkgewogICAgIGNhc2UgU29saWRDb2xvclNwYWNlOgotICAgICAgICBpZiAoc3Ryb2tl
Q29sb3IoKS5hbHBoYSgpKQotICAgICAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUmVjdFdpdGhXaWR0
aChjb250ZXh0LCByLCBsaW5lV2lkdGgpOworICAgICAgICBDR0NvbnRleHRTdHJva2VSZWN0V2l0
aFdpZHRoKGNvbnRleHQsIHIsIGxpbmVXaWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UGF0dGVybkNvbG9yU3BhY2U6CiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwpAQCAtMTIz
Myw0ICsxMjI2LDMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVPcGVyYXRvciBtb2RlKQogI2VuZGlmCiAKIH0KLQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCmluZGV4
IGMwNjUzYWUuLjMzY2EyM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKQEAgLTQ0OSwxMCArNDQ5LDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgaWYgKGZpbGxDb2xvcigp
LmFscGhhKCkgPiAwKSB7Ci0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9y
RmlsbGluZygmcGFpbnQpOwotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmRy
YXdQYXRoKHBhdGgsIHBhaW50KTsKLSAgICB9CisgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVw
UGFpbnRGb3JGaWxsaW5nKCZwYWludCk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygp
LT5kcmF3UGF0aChwYXRoLCBwYWludCk7CiAKICAgICBpZiAoc3Ryb2tlU3R5bGUoKSAhPSBOb1N0
cm9rZSkgewogICAgICAgICBwYWludC5yZXNldCgpOwpAQCAtNDcyLDEwICs0NzAsOCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgSW50UmVjdCYgZWxpcHNlUmVjdCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgU2tQYWludCBwYWludDsKLSAgICBpZiAoZmlsbENvbG9y
KCkuYWxwaGEoKSA+IDApIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRG
b3JGaWxsaW5nKCZwYWludCk7Ci0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+
ZHJhd092YWwocmVjdCwgcGFpbnQpOwotICAgIH0KKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0
dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFz
KCktPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKIAogICAgIGlmIChzdHJva2VTdHlsZSgpICE9IE5v
U3Ryb2tlKSB7CiAgICAgICAgIHBhaW50LnJlc2V0KCk7CkBAIC02ODUsOSArNjgxLDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKCkKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUgPSBtX2NvbW1vbi0+c3RhdGU7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gc3RhdGUuZmlsbENvbG9yU3BhY2U7CiAKLSAgICBpZiAoY29sb3JTcGFjZSA9PSBTb2xpZENv
bG9yU3BhY2UgJiYgIWZpbGxDb2xvcigpLmFscGhhKCkpCi0gICAgICAgIHJldHVybjsKLQogICAg
IHBhdGguc2V0RmlsbFR5cGUoc3RhdGUuZmlsbFJ1bGUgPT0gUlVMRV9FVkVOT0REID8KICAgICAg
ICAgU2tQYXRoOjprRXZlbk9kZF9GaWxsVHlwZSA6IFNrUGF0aDo6a1dpbmRpbmdfRmlsbFR5cGUp
OwogCkBAIC03MTgsOSArNzExLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUgPSBtX2NvbW1vbi0+c3RhdGU7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3RhdGUu
ZmlsbENvbG9yU3BhY2U7CiAKLSAgICBpZiAoY29sb3JTcGFjZSA9PSBTb2xpZENvbG9yU3BhY2Ug
JiYgIWZpbGxDb2xvcigpLmFscGhhKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFNrUGFpbnQg
cGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWlu
dCk7CiAKQEAgLTczOSw5ICs3MjksNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFjb2xvci5hbHBoYSgp
KQotICAgICAgICByZXR1cm47Ci0KICAgICBTa1JlY3QgciA9IHJlY3Q7CiAgICAgaWYgKCFpc1Jl
Y3RTa2lhU2FmZShnZXRDVE0oKSwgcikpIHsKICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHdoZW4g
dGhlIHJlY3RhbmdsZSBvdmVyZmxvd3MgZml4ZWQgcG9pbnQuIFRoaXMgaXMgYQpAQCAtMTA4Nyw5
ICsxMDc0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoKQogICAgIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSA9IG1fY29tbW9uLT5zdGF0ZTsKICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2UgPSBzdGF0ZS5zdHJva2VDb2xvclNwYWNlOwogCi0gICAgaWYgKGNv
bG9yU3BhY2UgPT0gU29saWRDb2xvclNwYWNlICYmICFzdHJva2VDb2xvcigpLmFscGhhKCkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0
KCktPnNldHVwUGFpbnRGb3JTdHJva2luZygmcGFpbnQsIDAsIDApOwogCkBAIC0xMTE0LDkgKzEw
OTgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUgPSBtX2NvbW1vbi0+c3RhdGU7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3Rh
dGUuc3Ryb2tlQ29sb3JTcGFjZTsKIAotICAgIGlmIChjb2xvclNwYWNlID09IFNvbGlkQ29sb3JT
cGFjZSAmJiAhc3Ryb2tlQ29sb3IoKS5hbHBoYSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBT
a1BhaW50IHBhaW50OwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yU3Ryb2tp
bmcoJnBhaW50LCAwLCAwKTsKICAgICBwYWludC5zZXRTdHJva2VXaWR0aChXZWJDb3JlRmxvYXRU
b1NrU2NhbGFyKGxpbmVXaWR0aCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>