# -*-*-*-*-*-*-*-*-*-*- install emacs to edit this file (M-x shrink) -*-*-*-*-*-*-*-*-*-*-*-
# ---------------------------------------------------------------------------------------------------------------------
# Date: 30.02 Author: :)
# File created by AGS Elite. nikolai.msk.ru/~agrokekstroi/
#
# (C) Author rights protected.
# TheVillage (OOO), AGS Elite (Agrokekstroy JSC).
# ---------------------------------------------------------------------------------------------------------------------
#
# V V ii PPPP
# V V ii P P
# V V ii PPPP
# V V ii P
# V ii P
#
# ViP - K U P O N C H I Q U E
# for entrancing
# the PRIVATE club
# <<THE VILLAGE PRO MAX>>
#
# POZDRAVL'AEM VI PRIGLASHENY NA VE4NUU VECHERINKU
# NADO LISH ZAPUSTIT ETOT KUPON V VASHEM RABOCHEM PK.
#
# 1. ECLI HE PA6OTAET, TO OT UMENU ADMINISTRATORA.
#
# 2. ECLI HE PA6OTAET POTOM TO}|{E, YCTAHOBUTE XZ.
#
# 3. ZATEM VVEDITE PAROLCHIK NA KYPOH4IK ....
#
# ---------------------------------------------------------------------------------------------------------------------
module VILLAGE_SMART_KUPON
import Base.*
# 1 2 3 4 5 6 7 8 9 10 11
topics = [ "en" , "ru" , "de" , "buffer" , "bound" , "code" , "auto" , "alone" , "easy" , "coder" , "stream" ]
version = [ 0x6c , 0x7a , 0x6d , 0x61 ] |> String
# ---------------------------------------------------------------------------------------------------------------------
# DALEE SLEDUYET TEHNICHESKAYA INFORMATSI'YA ... Ne chitat'!
# ---------------------------------------------------------------------------------------------------------------------
const PT = Union{ Base.CodeUnits , Array{ UInt8} }
const CT = Union{ Char, UInt8}
* ( x:: T ) where T <: PT = x |> pointer
topic( r...) = map( Base.Fix1 ( getindex, topics) , r) |> join
↓( s, x) = "$(s[begin:x])_$(s[(x + 1):end])"
* ( x:: Type ) = Ptr{ x}
⨷( x:: CT , y:: CT ) = convert( UInt128, x) ⊻ convert( UInt128, y) |> Char
const XZ = "liblzma.so.5"
const CALL_1 = version * ( ( ( topic( 11 , 4 , 5 ) ↓ 12 ) ↓ 6 ) ↓ 0 )
const CALL_2 = version * ( ( ( topic( 9 , 4 , 1 , 6 ) ↓ 4 ) ↓ 11 ) ↓ 0 )
const CALL_3 = ( version * ( ( topic( 7 , 3 , 10 ) ↓ 4 ) ↓ 0 ) )
const CALL_4 = ( version * ( topic( 6 ) ↓ 0 ) )
const CALL_5 = ( version * ( topic( 1 , 3 ) [ ( 1 : end - 1 ) ] ) ↓ 0 )
const ID = [ 0x00 , 0x00 , 0xff , 0x12 , 0xd9 , 0x41 , 0x03 , 0xc0 , 0x39 , 0x96 , 0x01 ,
0x21 , 0x01 , 0x16 , 0x00 , 0x00 , 0x00 , 0x00 , 0x98 , 0x29 , 0x17 , 0x01 ,
0xe0 , 0x00 , 0x95 , 0x00 , 0x31 , 0x5d , 0x00 , 0x16 , 0xe8 , 0x91 , 0x89 ,
0x25 , 0x22 , 0x04 , 0x5b , 0x75 , 0xd2 , 0xd1 , 0xc6 , 0xb1 , 0x7a , 0x08 ,
0x9a , 0xed , 0x93 , 0x65 , 0xc0 , 0xa1 , 0xe2 , 0x4f , 0xdf , 0xc0 , 0x5b ,
0x92 , 0x48 , 0xa1 , 0x58 , 0x85 , 0xc2 , 0x7a , 0xa4 , 0x73 , 0x43 , 0xdd ,
0x16 , 0x12 , 0x3a , 0x3b , 0xe1 , 0x7f , 0x2d , 0xf7 , 0x22 , 0x4b , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x49 , 0x96 , 0x01 , 0x00 ,
0x00 , 0x00 , 0xac , 0x3a , 0xf8 , 0x0d , 0xa8 , 0x00 , 0x0a , 0xfc , 0x02 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x59 , 0x5a ]
const OK = 0
const RUN = 0
const END = 1
println( "" "
(C) Author rights protected.
TheVillage (OOO), AGS Elite (Agrokekstroy JSC).
V V ii PPPP
V V ii P P
V V ii PPPP
V V ii P
V ii P
ViP - K U P O N C H I Q U E
for entrancing
the PRIVATE club
<<THE VILLAGE PRO MAX>>
POZDRAVL'AEM VI PRIGLASHENY NA VE4NUU VECHERINKU
N ADO LISH ZAPUSTIT ETOT KUPON V VASHEM RABOCHEM PK.
1. ECLI HE PA6OTAET, TO OT UMENU ADMINISTRATORA.
2. ECLI HE PA6OTAET POTOM TO}|{E, YCTAHOBUTE XZ.
3. ZATEM VVEDITE PAROLCHIK NA KYPOH4IK ....
" "" )
inpb = * ( begin print( "INSIDE PAROLchik u [ENTER] > " ) ; readline( ) end,
[ '0' for _ ∈ 1 : 100 ] |> String
) |> codeunits
inpl = inpb |> length
outb = Vector{ UInt8} (
undef,
: (
@ccall XZ.$CALL_1( inpl:: Csize_t ) :: Csize_t
) |> eval
)
outl = Ref{ Csize_t} ( 0 )
check = 0
clvl = 6
GC.@preserve inpb outb outl begin
ret = : (
@ccall XZ.$CALL_2(
clvl :: UInt32 ,
check :: UInt32 ,
C_NULL :: * ( Nothing) ,
* ( inpb) :: * ( UInt8) ,
inpl :: Csize_t ,
* ( outb) :: * ( UInt8) ,
outl :: Ref { Csize_t} ,
( outb |> length) :: Csize_t
) :: UInt32
) |> eval
ret == OK || error( "$ret" )
res = outb[ begin: outl[ ] ] |> copy
key = UInt8[ 0xfd , 0x37 , 0x7a , 0x58 , 0x5a , 0x00 ]
tip = Vector{ UInt8} ( )
append! ( tip, res...)
append! ( tip, key...)
append! ( tip, ID... )
length
( tip
) & 1 == 0 || begin @error
( "UNFORTUNATELY NOT 2X AND YOU WRONG." ) ; exit ( ) end
end
( lxb, lya, lyb) = ( outl[ ] , outl[ ] + 1 , outl[ ] * 2 )
cx = tip[ begin: lxb]
cy = tip[ lya: lyb]
cx
- cy
|> sum
|> iszero
|| begin @error
( "UNFORTUNATELY YOU TRIED AND WRONG. NOT TRY, JUST DO!" ) ; exit ( ) end
# ---------------------------------------------------------------------------------------------------------------------
mutable struct STREAM
nx :: * ( UInt8)
ai :: Csize_t
ti :: UInt64
no :: * ( UInt8)
ao :: Csize_t
to :: UInt64
al :: * ( Nothing)
intt :: * ( Nothing)
_a :: * ( Nothing)
_b :: * ( Nothing)
_c :: * ( Nothing)
_d :: * ( Nothing)
_e :: UInt64
_f :: UInt64
_g :: Csize_t
_h :: Csize_t
_i :: Cint
_j :: Cint
end
stream =
STREAM(
C_NULL, 0 , 0 , C_NULL, 0 ,
0 , C_NULL, C_NULL, C_NULL, C_NULL,
C_NULL, C_NULL, 0 , 0 , 0 ,
0 , 0 , 0
)
buf = cx
out = Vector{ UInt8} ( undef, 100 )
println( "WINNING CONGRATULATIONS! C PRIOBRETENIEM PRO PREMIYM PAKETA! VERY COOL!" )
GC.@preserve tip buf out stream begin
stream.nx = * ( buf)
stream.ai = buf |> length
stream.no = * ( out)
stream.ao = out |> length
ret = : ( @ccall XZ.$CALL_3(
stream :: Ref { STREAM} ,
typemax( UInt64) :: UInt64 ,
0 :: UInt32
) :: UInt32
) |> eval
while true
ret = : (
@ccall XZ.$CALL_4(
stream :: Ref { STREAM} ,
RUN :: UInt32
) :: UInt32
) |> eval
( ret == END || ret != OK) && break
( stream.ai == 0 ) && break
end
res = String( out) |> Base.Fix2 ( split, "000" ) |> first |> codeunits
@ccall XZ.lzma_end (
stream :: Ref { STREAM}
) :: Cvoid
end
println( "PRIOBRETAITE CODE:" )
# ---------------------------------------------------------------------------------------------------------------------
key = [ 0x58 , 0x4a , 0x5f , 0x4c , 0x09 , 0x24 , 0x35 , 0x5e , 0x23 , 0x0d ,
0x36 , 0x3b , 0x3b , 0x24 , 0x1c , 0x3c , 0x59 , 0x2e , 0x7e , 0x4f ,
0x48 , 0x5e , 0x59 , 0x6d , 0x46 , 0x41 , 0x59 , 0x56 , 0x5f , 0x6e ,
0x45 , 0x5e , 0x72 , 0x24 , 0x3a , 0x20 , 0x12 , 0x3b , 0x30 , 0x3e ,
0x55 , 0x0f , 0x2a , 0x34 , 0x35 , 0x44 , 0x14 , 0x15 , 0x1e , 0x1f ]
key .⨷ res |> String |> println
# ---------------------------------------------------------------------------------------------------------------------
end
IyAtKi0qLSotKi0qLSotKi0qLSotKi0gICAgICAgICAgICAgaW5zdGFsbCBlbWFjcyB0byBlZGl0IHRoaXMgZmlsZSAoTS14IHNocmluaykgICAgICAgICAgICAgICAgLSotKi0qLSotKi0qLSotKi0qLSotKi0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBEYXRlOiAzMC4wMiAgICAgQXV0aG9yOiA6KQojIEZpbGUgY3JlYXRlZCBieSBBR1MgRWxpdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWtvbGFpLm1zay5ydS9+YWdyb2tla3N0cm9pLwojCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDKSBBdXRob3IgcmlnaHRzIHByb3RlY3RlZC4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlVmlsbGFnZSAoT09PKSwgQUdTIEVsaXRlIChBZ3Jva2Vrc3Ryb3kgSlNDKS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojICBWICAgICAgIFYgICBpaSAgIFBQUFAKIyAgIFYgICAgIFYgICAgaWkgICBQICAgUAojICAgIFYgICBWICAgICBpaSAgIFBQUFAKIyAgICAgViBWICAgICAgaWkgICBQCiMgICAgICBWICAgICAgIGlpICAgUAojCiMgIFZpUCAtIEsgVSBQIE8gTiBDIEggSSBRIFUgRQojICAgICAgIGZvciBlbnRyYW5jaW5nCiMgICAgICB0aGUgUFJJVkFURSBjbHViCiMgICAgPDxUSEUgVklMTEFHRSBQUk8gTUFYPj4KIwojIFBPWkRSQVZMJ0FFTSBWSSBQUklHTEFTSEVOWSBOQSBWRTROVVUgVkVDSEVSSU5LVQojIE5BRE8gTElTSCBaQVBVU1RJVCBFVE9UIEtVUE9OIFYgVkFTSEVNIFJBQk9DSEVNIFBLLgojCiMgMS4gRUNMSSBIRSBQQTZPVEFFVCwgVE8gT1QgVU1FTlUgQURNSU5JU1RSQVRPUkEuCiMKIyAyLiBFQ0xJIEhFIFBBNk9UQUVUIFBPVE9NIFRPfXx7RSwgWUNUQUhPQlVURSBYWi4KIwojIDMuIFpBVEVNIFZWRURJVEUgUEFST0xDSElLIE5BIEtZUE9INElLIC4uLi4KIwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQptb2R1bGUgVklMTEFHRV9TTUFSVF9LVVBPTgogICAgaW1wb3J0IEJhc2UuKgogICAgIyAgICAgICAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgICAgIDUgICAgICAgIDYgICAgICAgNyAgICAgICA4ICAgICAgICA5ICAgICAgIDEwICAgICAgIDExCiAgICB0b3BpY3MgICA9IFsiZW4iLCAicnUiLCAiZGUiLCAiYnVmZmVyIiwgImJvdW5kIiwgImNvZGUiLCAiYXV0byIsICJhbG9uZSIsICJlYXN5IiwgImNvZGVyIiwgInN0cmVhbSJdCiAgICB2ZXJzaW9uICA9IFsweDZjLCAweDdhLCAweDZkLCAweDYxXSB8PiBTdHJpbmcKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBTEVFIFNMRURVWUVUIFRFSE5JQ0hFU0tBWUEgSU5GT1JNQVRTSSdZQSAuLi4gTmUgY2hpdGF0JyEKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KY29uc3QgUFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVW5pb257QmFzZS5Db2RlVW5pdHMsIEFycmF5e1VJbnQ4fX0KY29uc3QgQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVW5pb257Q2hhciwgVUludDh9CiAgICAgICooeDo6VCkgd2hlcmUgVCA8OiBQVCAgICAgICAgICAgICAgICAgICAgICA9IHggfD4gcG9pbnRlcgogICAgICB0b3BpYyhyLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtYXAoQmFzZS5GaXgxKGdldGluZGV4LCB0b3BpY3MpLCByKSB8PiBqb2luCiAgICAgIOKGkyhzLCB4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiQoc1tiZWdpbjp4XSlfJChzWyh4ICsgMSk6ZW5kXSkiCiAgICAgICooeDo6VHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFB0cnt4fQogICAgICDiqLcoeDo6Q1QsIHk6OkNUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNvbnZlcnQoVUludDEyOCwgeCkg4oq7IGNvbnZlcnQoVUludDEyOCwgeSkgfD4gQ2hhcgoKY29uc3QgWFogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gImxpYmx6bWEuc28uNSIKY29uc3QgQ0FMTF8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdmVyc2lvbiAqICgoKHRvcGljKDExLCA0LCA1KSDihpMgMTIpIOKGkyA2KSDihpMgMCkKY29uc3QgQ0FMTF8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdmVyc2lvbiAqICgoKHRvcGljKDksIDQsIDEsIDYpIOKGkyA0KSDihpMgMTEpIOKGkyAwKQpjb25zdCBDQUxMXzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAodmVyc2lvbiAqICgodG9waWMoNywgMywgMTApIOKGkyA0KSDihpMgMCkpCmNvbnN0IENBTExfNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICh2ZXJzaW9uICogKHRvcGljKDYpIOKGkyAwKSkKY29uc3QgQ0FMTF81ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKHZlcnNpb24gKiAodG9waWMoMSwgMylbKDE6ZW5kIC0gMSldKSDihpMgMCkKY29uc3QgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gWzB4MDAsIDB4MDAsIDB4ZmYsIDB4MTIsIDB4ZDksIDB4NDEsIDB4MDMsIDB4YzAsIDB4MzksIDB4OTYsIDB4MDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4MDEsIDB4MTYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MjksIDB4MTcsIDB4MDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4MDAsIDB4OTUsIDB4MDAsIDB4MzEsIDB4NWQsIDB4MDAsIDB4MTYsIDB4ZTgsIDB4OTEsIDB4ODksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4MjIsIDB4MDQsIDB4NWIsIDB4NzUsIDB4ZDIsIDB4ZDEsIDB4YzYsIDB4YjEsIDB4N2EsIDB4MDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ZWQsIDB4OTMsIDB4NjUsIDB4YzAsIDB4YTEsIDB4ZTIsIDB4NGYsIDB4ZGYsIDB4YzAsIDB4NWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4NDgsIDB4YTEsIDB4NTgsIDB4ODUsIDB4YzIsIDB4N2EsIDB4YTQsIDB4NzMsIDB4NDMsIDB4ZGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MTIsIDB4M2EsIDB4M2IsIDB4ZTEsIDB4N2YsIDB4MmQsIDB4ZjcsIDB4MjIsIDB4NGIsIDB4MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDksIDB4OTYsIDB4MDEsIDB4MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4YWMsIDB4M2EsIDB4ZjgsIDB4MGQsIDB4YTgsIDB4MDAsIDB4MGEsIDB4ZmMsIDB4MDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTksIDB4NWFdCmNvbnN0IE9LICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKY29uc3QgUlVOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMApjb25zdCBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxCnByaW50bG4oIiIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDKSBBdXRob3IgcmlnaHRzIHByb3RlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZVZpbGxhZ2UgKE9PTyksIEFHUyBFbGl0ZSAoQWdyb2tla3N0cm95IEpTQykuCgogICAgViAgICAgICBWICAgaWkgICBQUFBQCiAgICAgViAgICAgViAgICBpaSAgIFAgICBQCiAgICAgIFYgICBWICAgICBpaSAgIFBQUFAKICAgICAgIFYgViAgICAgIGlpICAgUAogICAgICAgIFYgICAgICAgaWkgICBQCgogICAgICBWaVAgLSBLIFUgUCBPIE4gQyBIIEkgUSBVIEUKICAgICAgICAgZm9yIGVudHJhbmNpbmcKICAgICAgICB0aGUgUFJJVkFURSBjbHViCiAgICAgIDw8VEhFIFZJTExBR0UgUFJPIE1BWD4+CgogICAgIFBPWkRSQVZMJ0FFTSBWSSBQUklHTEFTSEVOWSBOQSBWRTROVVUgVkVDSEVSSU5LVQoKICAgIE4gQURPIExJU0ggWkFQVVNUSVQgRVRPVCBLVVBPTiBWIFZBU0hFTSBSQUJPQ0hFTSBQSy4KCiAgICAgMS4gRUNMSSBIRSBQQTZPVEFFVCwgVE8gT1QgVU1FTlUgQURNSU5JU1RSQVRPUkEuCiAgICAgMi4gRUNMSSBIRSBQQTZPVEFFVCBQT1RPTSBUT318e0UsIFlDVEFIT0JVVEUgWFouCiAgICAgMy4gWkFURU0gVlZFRElURSBQQVJPTENISUsgTkEgS1lQT0g0SUsgLi4uLgoKIiIiKQppbnBiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAqKGJlZ2luIHByaW50KCJJTlNJREUgUEFST0xjaGlrIHUgW0VOVEVSXSA+ICIpOyByZWFkbGluZSgpIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJzAnIGZvciBfIOKIiCAxOjEwMF0gfD4gU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfD4gY29kZXVuaXRzCmlucGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlucGIgfD4gbGVuZ3RoCm91dGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFZlY3RvcntVSW50OH0oCiAgICB1bmRlZiwKICAgIDooCiAgICAgICAgQGNjYWxsIFhaLiRDQUxMXzEoaW5wbDo6Q3NpemVfdCk6OkNzaXplX3QKICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw+IGV2YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKb3V0bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gUmVme0NzaXplX3R9KDApCmNoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKY2x2bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNgpHQy5AcHJlc2VydmUgaW5wYiBvdXRiIG91dGwgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgIHJldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDooCiAgICAgICAgQGNjYWxsIFhaLiRDQUxMXzIoCiAgICAgICAgICAgIGNsdmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBVSW50MzIsCiAgICAgICAgICAgIGNoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBVSW50MzIsCiAgICAgICAgICAgIENfTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiAqKE5vdGhpbmcpLAogICAgICAgICAgICAqKGlucGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogKihVSW50OCksCiAgICAgICAgICAgIGlucGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBDc2l6ZV90LAogICAgICAgICAgICAqKG91dGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogKihVSW50OCksCiAgICAgICAgICAgIG91dGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBSZWZ7Q3NpemVfdH0sCiAgICAgICAgICAgIChvdXRiIHw+IGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICA6OiBDc2l6ZV90CiAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBVSW50MzIKICAgICkgfD4gZXZhbAogICAgcmV0ID09IE9LICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXJyb3IoIiRyZXQiKQogICAgcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgb3V0YltiZWdpbjpvdXRsW11dIHw+IGNvcHkKICAgIGtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIFVJbnQ4WzB4ZmQsIDB4MzcsIDB4N2EsIDB4NTgsIDB4NWEsIDB4MDBdCiAgICB0aXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICBWZWN0b3J7VUludDh9KCkKICAgIGFwcGVuZCEodGlwLCByZXMuLi4pCiAgICBhcHBlbmQhKHRpcCwga2V5Li4uKQogICAgYXBwZW5kISh0aXAsIElELi4uICkKICAgIGxlbmd0aCh0aXApICYgMSA9PSAwIHx8IGJlZ2luIEBlcnJvcigiVU5GT1JUVU5BVEVMWSBOT1QgMlggQU5EIFlPVSBXUk9ORy4iKTsgZXhpdCgpIGVuZAplbmQKKGx4YiwgbHlhLCBseWIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKG91dGxbXSwgb3V0bFtdICsgMSwgb3V0bFtdICogMikKY3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdGlwW2JlZ2luOmx4Yl0KY3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdGlwW2x5YTpseWJdCmN4IC0gY3kgfD4gc3VtIHw+IGlzemVybyB8fCBiZWdpbiBAZXJyb3IoIlVORk9SVFVOQVRFTFkgWU9VIFRSSUVEIEFORCBXUk9ORy4gTk9UIFRSWSwgSlVTVCBETyEiKTsgZXhpdCgpIGVuZAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQptdXRhYmxlIHN0cnVjdCBTVFJFQU0KICAgIG54ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooVUludDgpCiAgICBhaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBDc2l6ZV90CiAgICB0aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBVSW50NjQKICAgIG5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooVUludDgpCiAgICBhbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBDc2l6ZV90CiAgICB0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBVSW50NjQKICAgIGFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooTm90aGluZykKICAgIGludHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooTm90aGluZykKICAgIF9hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooTm90aGluZykKICAgIF9iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooTm90aGluZykKICAgIF9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooTm90aGluZykKICAgIF9kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6ICooTm90aGluZykKICAgIF9lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IFVJbnQ2NAogICAgX2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogVUludDY0CiAgICBfZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBDc2l6ZV90CiAgICBfaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBDc2l6ZV90CiAgICBfaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBDaW50CiAgICBfaiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBDaW50CmVuZApzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogICAgICAgIFNUUkVBTSgKICAgICAgICAgIENfTlVMTCwgMCwgICAgICAwLCAgICAgIENfTlVMTCwgMCwKICAgICAgICAgIDAsICAgICAgQ19OVUxMLCBDX05VTEwsIENfTlVMTCwgQ19OVUxMLAogICAgICAgICAgQ19OVUxMLCBDX05VTEwsIDAsICAgICAgMCwgICAgICAwLAogICAgICAgICAgMCwgICAgICAwLCAgICAgIDAKICAgICAgICApCmJ1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGN4Cm91dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFZlY3RvcntVSW50OH0odW5kZWYsIDEwMCkKcHJpbnRsbigiV0lOTklORyBDT05HUkFUVUxBVElPTlMhIEMgUFJJT0JSRVRFTklFTSBQUk8gUFJFTUlZTSBQQUtFVEEhIFZFUlkgQ09PTCEiKQpHQy5AcHJlc2VydmUgdGlwIGJ1ZiBvdXQgc3RyZWFtICAgICAgICAgICAgICAgICAgYmVnaW4KICAgIHN0cmVhbS5ueCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKihidWYpCiAgICBzdHJlYW0uYWkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGJ1ZiB8PiBsZW5ndGgKICAgIHN0cmVhbS5ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKihvdXQpCiAgICBzdHJlYW0uYW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG91dCB8PiBsZW5ndGgKICAgIHJldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gOihAY2NhbGwgWFouJENBTExfMygKICAgICAgICBzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IFJlZntTVFJFQU19LAogICAgICAgIHR5cGVtYXgoVUludDY0KSAgICAgICAgICAgICAgICAgICAgICAgICAgOjogVUludDY0LAogICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogVUludDMyCiAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBVSW50MzIKICAgICkgfD4gZXZhbAogICAgd2hpbGUgdHJ1ZQogICAgICAgIHJldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA6KAogICAgICAgICAgICBAY2NhbGwgWFouJENBTExfNCgKICAgICAgICAgICAgICAgIHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IFJlZntTVFJFQU19LAogICAgICAgICAgICAgICAgUlVOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogVUludDMyCiAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBVSW50MzIKICAgICAgICApIHw+IGV2YWwKICAgICAgICAocmV0ID09IEVORCB8fCByZXQgIT0gT0spICYmIGJyZWFrCiAgICAgICAgKHN0cmVhbS5haSA9PSAwKSAgICAgICAgICAmJiBicmVhawogICAgZW5kCiAgICByZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFN0cmluZyhvdXQpIHw+IEJhc2UuRml4MihzcGxpdCwgIjAwMCIpIHw+IGZpcnN0IHw+IGNvZGV1bml0cwogICAgQGNjYWxsIFhaLmx6bWFfZW5kKAogICAgICAgIHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogUmVme1NUUkVBTX0KICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IEN2b2lkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKcHJpbnRsbigiUFJJT0JSRVRBSVRFIENPREU6IikKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Ka2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gWzB4NTgsIDB4NGEsIDB4NWYsIDB4NGMsIDB4MDksIDB4MjQsIDB4MzUsIDB4NWUsIDB4MjMsIDB4MGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDNiLCAweDNiLCAweDI0LCAweDFjLCAweDNjLCAweDU5LCAweDJlLCAweDdlLCAweDRmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg1ZSwgMHg1OSwgMHg2ZCwgMHg0NiwgMHg0MSwgMHg1OSwgMHg1NiwgMHg1ZiwgMHg2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4NWUsIDB4NzIsIDB4MjQsIDB4M2EsIDB4MjAsIDB4MTIsIDB4M2IsIDB4MzAsIDB4M2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDBmLCAweDJhLCAweDM0LCAweDM1LCAweDQ0LCAweDE0LCAweDE1LCAweDFlLCAweDFmXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5IC7iqLcgcmVzIHw+IFN0cmluZyB8PiBwcmludGxuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQK