From edb5a1a5c6b8381c41561f303aa3588ff5fbab69 Mon Sep 17 00:00:00 2001 From: Kier Davis Date: Sat, 18 Jun 2016 15:43:32 +0100 Subject: [PATCH 001/292] Fix clear() on CountTable The record tuples used in CountData.data don't contain an 'hcode' member, unlike Table and OrderedTable, causing the existing clearImpl() implementation to break when attempting to assign to t.data[i].hcode. --- lib/pure/collections/tableimpl.nim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pure/collections/tableimpl.nim b/lib/pure/collections/tableimpl.nim index 1bbf19ee9..f73632008 100644 --- a/lib/pure/collections/tableimpl.nim +++ b/lib/pure/collections/tableimpl.nim @@ -142,7 +142,8 @@ template delImpl() {.dirty, immediate.} = template clearImpl() {.dirty, immediate.} = for i in 0 .. Date: Sat, 18 Jun 2016 15:45:31 +0100 Subject: [PATCH 002/292] Add tests for tables.clear() This should reduce the chance of regressions. --- tests/collections/ttables.nim | 21 +++++++++++++++++++++ tests/collections/ttablesref.nim | 25 +++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/tests/collections/ttables.nim b/tests/collections/ttables.nim index a8a182a78..773a8f3b7 100644 --- a/tests/collections/ttables.nim +++ b/tests/collections/ttables.nim @@ -134,6 +134,27 @@ block mpairsTableTest1: block SyntaxTest: var x = toTable[int, string]({:}) +block clearTableTest: + var t = data.toTable + assert t.len() != 0 + t.clear() + assert t.len() == 0 + +block clearOrderedTableTest: + var t = data.toOrderedTable + assert t.len() != 0 + t.clear() + assert t.len() == 0 + +block clearCountTableTest: + var t = initCountTable[string]() + t.inc("90", 3) + t.inc("12", 2) + t.inc("34", 1) + assert t.len() != 0 + t.clear() + assert t.len() == 0 + proc orderedTableSortTest() = var t = initOrderedTable[string, int](2) for key, val in items(data): t[key] = val diff --git a/tests/collections/ttablesref.nim b/tests/collections/ttablesref.nim index 32494f1f2..12af1ccbb 100644 --- a/tests/collections/ttablesref.nim +++ b/tests/collections/ttablesref.nim @@ -141,6 +141,31 @@ block anonZipTest: let values = @[1, 2, 3] doAssert "{a: 1, b: 2, c: 3}" == $ toTable zip(keys, values) +block clearTableTest: + var t = newTable[string, float]() + t["test"] = 1.2345 + t["111"] = 1.000043 + t["123"] = 1.23 + assert t.len() != 0 + t.clear() + assert t.len() == 0 + +block clearOrderedTableTest: + var t = newOrderedTable[string, int](2) + for key, val in items(data): t[key] = val + assert t.len() != 0 + t.clear() + assert t.len() == 0 + +block clearCountTableTest: + var t = newCountTable[string]() + t.inc("90", 3) + t.inc("12", 2) + t.inc("34", 1) + assert t.len() != 0 + t.clear() + assert t.len() == 0 + orderedTableSortTest() echo "true" From 449960bf7e3cad1aa4f3e38e39582ac220237ecb Mon Sep 17 00:00:00 2001 From: Kier Davis Date: Sat, 9 Jul 2016 17:34:01 +0100 Subject: [PATCH 003/292] Add a fix for clear() on non-ref types by adding a missing 'var' annotation to the type signature However, this fix won't take effect until a compiler bug (#4448) is fixed. Until then, the codebase functions identically to how it did before this commit (calls to clear() fail to compile for Table/OrderedTable/CountTable as the argument is immutable). --- lib/pure/collections/tables.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pure/collections/tables.nim b/lib/pure/collections/tables.nim index e454a43cb..3a0c50c50 100644 --- a/lib/pure/collections/tables.nim +++ b/lib/pure/collections/tables.nim @@ -85,7 +85,7 @@ template dataLen(t): expr = len(t.data) include tableimpl -proc clear*[A, B](t: Table[A, B] | TableRef[A, B]) = +proc clear*[A, B](t: var Table[A, B] | TableRef[A, B]) = ## Resets the table so that it is empty. clearImpl() @@ -425,7 +425,7 @@ proc len*[A, B](t: OrderedTable[A, B]): int {.inline.} = ## returns the number of keys in `t`. result = t.counter -proc clear*[A, B](t: OrderedTable[A, B] | OrderedTableRef[A, B]) = +proc clear*[A, B](t: var OrderedTable[A, B] | OrderedTableRef[A, B]) = ## Resets the table so that it is empty. clearImpl() t.first = -1 @@ -754,7 +754,7 @@ proc len*[A](t: CountTable[A]): int = ## returns the number of keys in `t`. result = t.counter -proc clear*[A](t: CountTable[A] | CountTableRef[A]) = +proc clear*[A](t: var CountTable[A] | CountTableRef[A]) = ## Resets the table so that it is empty. clearImpl() t.counter = 0 From 8e843354e12fdaf7697cfdfe9cd4efd83737db18 Mon Sep 17 00:00:00 2001 From: Kier Davis Date: Sat, 9 Jul 2016 18:21:37 +0100 Subject: [PATCH 004/292] Disable failing tests for tables.clear() The tests for tables.clear() in tests/collections/ttables.nim currently fail as a result of #4448, so I've wrapped them in a 'when false' to disable them until the bug is fixed. --- tests/collections/ttables.nim | 38 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/tests/collections/ttables.nim b/tests/collections/ttables.nim index 773a8f3b7..59fef4920 100644 --- a/tests/collections/ttables.nim +++ b/tests/collections/ttables.nim @@ -134,26 +134,28 @@ block mpairsTableTest1: block SyntaxTest: var x = toTable[int, string]({:}) -block clearTableTest: - var t = data.toTable - assert t.len() != 0 - t.clear() - assert t.len() == 0 +# Until #4448 is fixed, these tests will fail +when false: + block clearTableTest: + var t = data.toTable + assert t.len() != 0 + t.clear() + assert t.len() == 0 -block clearOrderedTableTest: - var t = data.toOrderedTable - assert t.len() != 0 - t.clear() - assert t.len() == 0 + block clearOrderedTableTest: + var t = data.toOrderedTable + assert t.len() != 0 + t.clear() + assert t.len() == 0 -block clearCountTableTest: - var t = initCountTable[string]() - t.inc("90", 3) - t.inc("12", 2) - t.inc("34", 1) - assert t.len() != 0 - t.clear() - assert t.len() == 0 + block clearCountTableTest: + var t = initCountTable[string]() + t.inc("90", 3) + t.inc("12", 2) + t.inc("34", 1) + assert t.len() != 0 + t.clear() + assert t.len() == 0 proc orderedTableSortTest() = var t = initOrderedTable[string, int](2) From 981a8950c61afb7814976333945b53f1799ad81a Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Tue, 9 Aug 2016 22:17:05 +0800 Subject: [PATCH 005/292] remove keepAlive and friends --- compiler/ccgcalls.nim | 5 ----- compiler/ccgexprs.nim | 27 +++++++-------------------- compiler/cgen.nim | 27 +-------------------------- 3 files changed, 8 insertions(+), 51 deletions(-) diff --git a/compiler/ccgcalls.nim b/compiler/ccgcalls.nim index dffb8a9a5..408a0c09c 100644 --- a/compiler/ccgcalls.nim +++ b/compiler/ccgcalls.nim @@ -536,8 +536,6 @@ proc genCall(p: BProc, e: PNode, d: var TLoc) = else: genPrefixCall(p, nil, e, d) postStmtActions(p) - when false: - if d.s == onStack and containsGarbageCollectedRef(d.t): keepAlive(p, d) proc genAsgnCall(p: BProc, le, ri: PNode, d: var TLoc) = if ri.sons[0].typ.skipTypes({tyGenericInst}).callConv == ccClosure: @@ -549,6 +547,3 @@ proc genAsgnCall(p: BProc, le, ri: PNode, d: var TLoc) = else: genPrefixCall(p, le, ri, d) postStmtActions(p) - when false: - if d.s == onStack and containsGarbageCollectedRef(d.t): keepAlive(p, d) - diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 7a60e1ef7..67debfe4f 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -171,7 +171,6 @@ proc getStorageLoc(n: PNode): TStorageLoc = proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = if dest.s == OnStack or not usesNativeGC(): linefmt(p, cpsStmts, "$1 = $2;$n", rdLoc(dest), rdLoc(src)) - if needToKeepAlive in flags: keepAlive(p, dest) elif dest.s == OnHeap: # location is on heap # now the writer barrier is inlined for performance: @@ -198,7 +197,6 @@ proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = else: linefmt(p, cpsStmts, "#unsureAsgnRef((void**) $1, $2);$n", addrLoc(dest), rdLoc(src)) - if needToKeepAlive in flags: keepAlive(p, dest) proc asgnComplexity(n: PNode): int = if n != nil: @@ -268,7 +266,6 @@ proc genGenericAsgn(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = linefmt(p, cpsStmts, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($3));$n", addrLoc(dest), addrLoc(src), rdLoc(dest)) - if needToKeepAlive in flags: keepAlive(p, dest) else: linefmt(p, cpsStmts, "#genericShallowAssign((void*)$1, (void*)$2, $3);$n", addrLoc(dest), addrLoc(src), genTypeInfo(p.module, dest.t)) @@ -299,7 +296,6 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = else: if dest.s == OnStack or not usesNativeGC(): linefmt(p, cpsStmts, "$1 = #copyString($2);$n", dest.rdLoc, src.rdLoc) - if needToKeepAlive in flags: keepAlive(p, dest) elif dest.s == OnHeap: # we use a temporary to care for the dreaded self assignment: var tmp: TLoc @@ -310,7 +306,6 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = else: linefmt(p, cpsStmts, "#unsureAsgnRef((void**) $1, #copyString($2));$n", addrLoc(dest), rdLoc(src)) - if needToKeepAlive in flags: keepAlive(p, dest) of tyProc: if needsComplexAssignment(dest.t): # optimize closure assignment: @@ -1006,9 +1001,8 @@ proc genStrConcat(p: BProc, e: PNode, d: var TLoc) = add(p.s(cpsStmts), appends) if d.k == locNone: d = tmp - keepAlive(p, tmp) else: - genAssignment(p, d, tmp, {needToKeepAlive}) # no need for deep copying + genAssignment(p, d, tmp, {}) # no need for deep copying gcUsage(e) proc genStrAppend(p: BProc, e: PNode, d: var TLoc) = @@ -1045,7 +1039,6 @@ proc genStrAppend(p: BProc, e: PNode, d: var TLoc) = rdLoc(dest), rdLoc(a))) linefmt(p, cpsStmts, "$1 = #resizeString($1, $2$3);$n", rdLoc(dest), lens, rope(L)) - keepAlive(p, dest) add(p.s(cpsStmts), appends) gcUsage(e) @@ -1065,7 +1058,6 @@ proc genSeqElemAppend(p: BProc, e: PNode, d: var TLoc) = rdLoc(a), getTypeDesc(p.module, skipTypes(e.sons[1].typ, abstractVar)), getTypeDesc(p.module, bt)]) - keepAlive(p, a) #if bt != b.t: # echo "YES ", e.info, " new: ", typeToString(bt), " old: ", typeToString(b.t) initLoc(dest, locExpr, bt, OnHeap) @@ -1092,7 +1084,7 @@ proc rawGenNew(p: BProc, a: TLoc, sizeExpr: Rope) = genTypeInfo(p.module, refType), sizeExpr] if a.s == OnHeap and usesNativeGC(): - # use newObjRC1 as an optimization; and we don't need 'keepAlive' either + # use newObjRC1 as an optimization if canFormAcycle(a.t): linefmt(p, cpsStmts, "if ($1) #nimGCunref($1);$n", a.rdLoc) else: @@ -1101,7 +1093,7 @@ proc rawGenNew(p: BProc, a: TLoc, sizeExpr: Rope) = linefmt(p, cpsStmts, "$1 = $2;$n", a.rdLoc, b.rdLoc) else: b.r = ropecg(p.module, "($1) #newObj($2, $3)", args) - genAssignment(p, a, b, {needToKeepAlive}) # set the object type: + genAssignment(p, a, b, {}) # set the object type: let bt = skipTypes(refType.sons[0], abstractRange) genObjectInit(p, cpsStmts, bt, a, false) @@ -1132,7 +1124,7 @@ proc genNewSeqAux(p: BProc, dest: TLoc, length: Rope) = linefmt(p, cpsStmts, "$1 = $2;$n", dest.rdLoc, call.rdLoc) else: call.r = ropecg(p.module, "($1) #newSeq($2, $3)", args) - genAssignment(p, dest, call, {needToKeepAlive}) + genAssignment(p, dest, call, {}) proc genNewSeq(p: BProc, e: PNode) = var a, b: TLoc @@ -1254,7 +1246,7 @@ proc genNewFinalize(p: BProc, e: PNode) = b.r = ropecg(p.module, "($1) #newObj($2, sizeof($3))", [ getTypeDesc(p.module, refType), ti, getTypeDesc(p.module, skipTypes(refType.lastSon, abstractRange))]) - genAssignment(p, a, b, {needToKeepAlive}) # set the object type: + genAssignment(p, a, b, {}) # set the object type: bt = skipTypes(refType.lastSon, abstractRange) genObjectInit(p, cpsStmts, bt, a, false) gcUsage(e) @@ -1364,7 +1356,7 @@ proc genDollar(p: BProc, n: PNode, d: var TLoc, frmt: string) = initLocExpr(p, n.sons[1], a) a.r = ropecg(p.module, frmt, [rdLoc(a)]) if d.k == locNone: getTemp(p, n.typ, d) - genAssignment(p, d, a, {needToKeepAlive}) + genAssignment(p, d, a, {}) gcUsage(n) proc genArrayLen(p: BProc, e: PNode, d: var TLoc, op: TMagic) = @@ -1406,12 +1398,10 @@ proc genSetLengthSeq(p: BProc, e: PNode, d: var TLoc) = lineCg(p, cpsStmts, setLenPattern, [ rdLoc(a), rdLoc(b), getTypeDesc(p.module, t), getTypeDesc(p.module, t.sons[0])]) - keepAlive(p, a) gcUsage(e) proc genSetLengthStr(p: BProc, e: PNode, d: var TLoc) = binaryStmt(p, e, d, "$1 = #setLengthStr($1, $2);$n") - keepAlive(p, d) gcUsage(e) proc genSwap(p: BProc, e: PNode, d: var TLoc) = @@ -1719,10 +1709,7 @@ proc genMagicExpr(p: BProc, e: PNode, d: var TLoc, op: TMagic) = getTypeDesc(p.module, ranged), res]) of mConStrStr: genStrConcat(p, e, d) - of mAppendStrCh: - binaryStmt(p, e, d, "$1 = #addChar($1, $2);$n") - # strictly speaking we need to generate "keepAlive" here too, but this - # very likely not needed and would slow down the code too much I fear + of mAppendStrCh: binaryStmt(p, e, d, "$1 = #addChar($1, $2);$n") of mAppendStrStr: genStrAppend(p, e, d) of mAppendSeqElem: genSeqElemAppend(p, e, d) of mEqStr: genStrEquals(p, e, d) diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 9851ab0e2..878ee1cd8 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -260,7 +260,7 @@ proc genObjectInit(p: BProc, section: TCProcSection, t: PType, a: TLoc, type TAssignmentFlag = enum needToCopy, needForSubtypeCheck, afDestIsNil, afDestIsNotNil, afSrcIsNil, - afSrcIsNotNil, needToKeepAlive + afSrcIsNotNil TAssignmentFlags = set[TAssignmentFlag] proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) @@ -338,31 +338,6 @@ proc getTemp(p: BProc, t: PType, result: var TLoc; needsInit=false) = result.flags = {} constructLoc(p, result, not needsInit) -proc keepAlive(p: BProc, toKeepAlive: TLoc) = - when false: - # deactivated because of the huge slowdown this causes; GC will take care - # of interior pointers instead - if optRefcGC notin gGlobalOptions: return - var result: TLoc - var fid = rope(p.gcFrameId) - result.r = "GCFRAME.F" & fid - addf(p.gcFrameType, " $1 F$2;$n", - [getTypeDesc(p.module, toKeepAlive.t), fid]) - inc(p.gcFrameId) - result.k = locTemp - #result.a = -1 - result.t = toKeepAlive.t - result.s = OnStack - result.flags = {} - - if not isComplexValueType(skipTypes(toKeepAlive.t, abstractVarRange)): - linefmt(p, cpsStmts, "$1 = $2;$n", rdLoc(result), rdLoc(toKeepAlive)) - else: - useStringh(p.module) - linefmt(p, cpsStmts, - "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($3));$n", - addrLoc(result), addrLoc(toKeepAlive), rdLoc(result)) - proc initGCFrame(p: BProc): Rope = if p.gcFrameId > 0: result = "struct {$1} GCFRAME;$n" % [p.gcFrameType] From 3cd4cf4320cba2795d2a9021c55a20cbbe2b04ae Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Tue, 9 Aug 2016 22:54:27 +0800 Subject: [PATCH 006/292] remove unused stuff --- compiler/ast.nim | 23 ------------- compiler/astalgo.nim | 77 ------------------------------------------ compiler/ccgcalls.nim | 4 +-- compiler/ccgexprs.nim | 25 -------------- compiler/ccgstmts.nim | 12 ------- compiler/ccgtypes.nim | 11 ------ compiler/cgen.nim | 10 +----- compiler/extccomp.nim | 4 --- compiler/idgen.nim | 2 +- compiler/lexer.nim | 9 ----- compiler/modules.nim | 9 ----- compiler/msgs.nim | 2 -- compiler/nimblecmd.nim | 12 ------- compiler/parser.nim | 20 ----------- compiler/renderer.nim | 21 +----------- compiler/sem.nim | 2 -- compiler/semexprs.nim | 12 ------- compiler/semfold.nim | 26 -------------- compiler/seminst.nim | 30 ---------------- compiler/semmagic.nim | 7 ---- compiler/sempass2.nim | 7 ---- compiler/semstmts.nim | 12 ------- compiler/semtempl.nim | 29 ---------------- compiler/transf.nim | 7 ---- compiler/types.nim | 20 ----------- compiler/vmdeps.nim | 4 --- compiler/vmgen.nim | 14 -------- 27 files changed, 5 insertions(+), 406 deletions(-) diff --git a/compiler/ast.nim b/compiler/ast.nim index 277a21ba5..a5357b2b4 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -862,9 +862,6 @@ type key*, val*: RootRef TPairSeq* = seq[TPair] - TTable* = object # the same as table[PObject] of PObject - counter*: int - data*: TPairSeq TIdPair* = object key*: PIdObj @@ -1108,12 +1105,6 @@ proc copyIdTable*(dest: var TIdTable, src: TIdTable) = newSeq(dest.data, len(src.data)) for i in countup(0, high(src.data)): dest.data[i] = src.data[i] -proc copyTable*(dest: var TTable, src: TTable) = - dest.counter = src.counter - if isNil(src.data): return - setLen(dest.data, len(src.data)) - for i in countup(0, high(src.data)): dest.data[i] = src.data[i] - proc copyObjectSet*(dest: var TObjectSet, src: TObjectSet) = dest.counter = src.counter if isNil(src.data): return @@ -1327,10 +1318,6 @@ proc initStrTable*(x: var TStrTable) = proc newStrTable*: TStrTable = initStrTable(result) -proc initTable(x: var TTable) = - x.counter = 0 - newSeq(x.data, StartSize) - proc initIdTable*(x: var TIdTable) = x.counter = 0 newSeq(x.data, StartSize) @@ -1511,16 +1498,6 @@ proc hasSubnodeWith*(n: PNode, kind: TNodeKind): bool = return true result = false -proc replaceSons(n: PNode, oldKind, newKind: TNodeKind) = - for i in countup(0, sonsLen(n) - 1): - if n.sons[i].kind == oldKind: n.sons[i].kind = newKind - -proc sonsNotNil(n: PNode): bool = - for i in countup(0, sonsLen(n) - 1): - if n.sons[i] == nil: - return false - result = true - proc getInt*(a: PNode): BiggestInt = case a.kind of nkIntLit..nkUInt64Lit: result = a.intVal diff --git a/compiler/astalgo.nim b/compiler/astalgo.nim index 3ca44ea7e..7c07b2995 100644 --- a/compiler/astalgo.nim +++ b/compiler/astalgo.nim @@ -31,17 +31,6 @@ proc objectSetIncl*(t: var TObjectSet, obj: RootRef) proc objectSetContainsOrIncl*(t: var TObjectSet, obj: RootRef): bool # more are not needed ... -# ----------------------- (key, val)-Hashtables ---------------------------- -proc tablePut*(t: var TTable, key, val: RootRef) -proc tableGet*(t: TTable, key: RootRef): RootRef -type - TCmpProc* = proc (key, closure: RootRef): bool {.nimcall.} # true if found - -proc tableSearch*(t: TTable, key, closure: RootRef, - comparator: TCmpProc): RootRef - # return val as soon as comparator returns true; if this never happens, - # nil is returned - # ----------------------- str table ----------------------------------------- proc strTableContains*(t: TStrTable, n: PSym): bool proc strTableAdd*(t: var TStrTable, n: PSym) @@ -251,20 +240,6 @@ proc symToYamlAux(n: PSym, marker: var IntSet, indent, maxRecDepth: int): Rope proc typeToYamlAux(n: PType, marker: var IntSet, indent, maxRecDepth: int): Rope -proc strTableToYaml(n: TStrTable, marker: var IntSet, indent: int, - maxRecDepth: int): Rope = - var istr = rspaces(indent + 2) - result = rope("[") - var mycount = 0 - for i in countup(0, high(n.data)): - if n.data[i] != nil: - if mycount > 0: add(result, ",") - addf(result, "$N$1$2", - [istr, symToYamlAux(n.data[i], marker, indent + 2, maxRecDepth - 1)]) - inc(mycount) - if mycount > 0: addf(result, "$N$1", [rspaces(indent)]) - add(result, "]") - assert(mycount == n.counter) proc ropeConstr(indent: int, c: openArray[Rope]): Rope = # array of (name, value) pairs @@ -463,9 +438,6 @@ proc debug(n: PType) = proc debug(n: PNode) = echo($debugTree(n, 0, 100)) -const - EmptySeq = @[] - proc nextTry(h, maxHash: Hash): Hash = result = ((5 * h) + 1) and maxHash # For any initial h in range(maxHash), repeating that maxHash times @@ -519,55 +491,6 @@ proc objectSetContainsOrIncl(t: var TObjectSet, obj: RootRef): bool = inc(t.counter) result = false -proc tableRawGet(t: TTable, key: RootRef): int = - var h: Hash = hashNode(key) and high(t.data) # start with real hash value - while t.data[h].key != nil: - if t.data[h].key == key: - return h - h = nextTry(h, high(t.data)) - result = -1 - -proc tableSearch(t: TTable, key, closure: RootRef, - comparator: TCmpProc): RootRef = - var h: Hash = hashNode(key) and high(t.data) # start with real hash value - while t.data[h].key != nil: - if t.data[h].key == key: - if comparator(t.data[h].val, closure): - # BUGFIX 1 - return t.data[h].val - h = nextTry(h, high(t.data)) - result = nil - -proc tableGet(t: TTable, key: RootRef): RootRef = - var index = tableRawGet(t, key) - if index >= 0: result = t.data[index].val - else: result = nil - -proc tableRawInsert(data: var TPairSeq, key, val: RootRef) = - var h: Hash = hashNode(key) and high(data) - while data[h].key != nil: - assert(data[h].key != key) - h = nextTry(h, high(data)) - assert(data[h].key == nil) - data[h].key = key - data[h].val = val - -proc tableEnlarge(t: var TTable) = - var n: TPairSeq - newSeq(n, len(t.data) * GrowthFactor) - for i in countup(0, high(t.data)): - if t.data[i].key != nil: tableRawInsert(n, t.data[i].key, t.data[i].val) - swap(t.data, n) - -proc tablePut(t: var TTable, key, val: RootRef) = - var index = tableRawGet(t, key) - if index >= 0: - t.data[index].val = val - else: - if mustRehash(len(t.data), t.counter): tableEnlarge(t) - tableRawInsert(t.data, key, val) - inc(t.counter) - proc strTableContains(t: TStrTable, n: PSym): bool = var h: Hash = n.name.h and high(t.data) # start with real hash value while t.data[h] != nil: diff --git a/compiler/ccgcalls.nim b/compiler/ccgcalls.nim index 408a0c09c..48157925c 100644 --- a/compiler/ccgcalls.nim +++ b/compiler/ccgcalls.nim @@ -411,7 +411,7 @@ proc genPatternCall(p: BProc; ri: PNode; pat: string; typ: PType): Rope = add(result, substr(pat, start, i - 1)) proc genInfixCall(p: BProc, le, ri: PNode, d: var TLoc) = - var op, a: TLoc + var op: TLoc initLocExpr(p, ri.sons[0], op) # getUniqueType() is too expensive here: var typ = skipTypes(ri.sons[0].typ, abstractInst) @@ -458,7 +458,7 @@ proc genInfixCall(p: BProc, le, ri: PNode, d: var TLoc) = proc genNamedParamCall(p: BProc, ri: PNode, d: var TLoc) = # generates a crappy ObjC call - var op, a: TLoc + var op: TLoc initLocExpr(p, ri.sons[0], op) var pl = ~"[" # getUniqueType() is too expensive here: diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 67debfe4f..8d0ead368 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -30,19 +30,6 @@ proc intLiteral(i: BiggestInt): Rope = else: result = ~"(IL64(-9223372036854775807) - IL64(1))" -proc int32Literal(i: int): Rope = - if i == int(low(int32)): - result = ~"(-2147483647 -1)" - else: - result = rope(i) - -proc genHexLiteral(v: PNode): Rope = - # hex literals are unsigned in C - # so we don't generate hex literals any longer. - if v.kind notin {nkIntLit..nkUInt64Lit}: - internalError(v.info, "genHexLiteral") - result = intLiteral(v.intVal) - proc getStrLit(m: BModule, s: string): Rope = discard cgsym(m, "TGenericSeq") result = getTempName(m) @@ -395,9 +382,6 @@ proc genDeepCopy(p: BProc; dest, src: TLoc) = linefmt(p, cpsStmts, "$1 = $2;$n", rdLoc(dest), rdLoc(src)) else: internalError("genDeepCopy: " & $ty.kind) -proc getDestLoc(p: BProc, d: var TLoc, typ: PType) = - if d.k == locNone: getTemp(p, typ, d) - proc putLocIntoDest(p: BProc, d: var TLoc, s: TLoc) = if d.k != locNone: if lfNoDeepCopy in d.flags: genAssignment(p, d, s, {}) @@ -448,13 +432,6 @@ proc unaryStmt(p: BProc, e: PNode, d: var TLoc, frmt: string) = initLocExpr(p, e.sons[1], a) lineCg(p, cpsStmts, frmt, [rdLoc(a)]) -proc binaryStmtChar(p: BProc, e: PNode, d: var TLoc, frmt: string) = - var a, b: TLoc - if (d.k != locNone): internalError(e.info, "binaryStmtChar") - initLocExpr(p, e.sons[1], a) - initLocExpr(p, e.sons[2], b) - lineCg(p, cpsStmts, frmt, [rdCharLoc(a), rdCharLoc(b)]) - proc binaryExpr(p: BProc, e: PNode, d: var TLoc, frmt: string) = var a, b: TLoc assert(e.sons[1].typ != nil) @@ -1236,7 +1213,6 @@ proc genNewFinalize(p: BProc, e: PNode) = a, b, f: TLoc refType, bt: PType ti: Rope - oldModule: BModule refType = skipTypes(e.sons[1].typ, abstractVarRange) initLocExpr(p, e.sons[1], a) initLocExpr(p, e.sons[2], f) @@ -1671,7 +1647,6 @@ proc binaryFloatArith(p: BProc, e: PNode, d: var TLoc, m: TMagic) = binaryArith(p, e, d, m) proc genMagicExpr(p: BProc, e: PNode, d: var TLoc, op: TMagic) = - var line, filen: Rope case op of mOr, mAnd: genAndOr(p, e, d, op) of mNot..mToBiggestInt: unaryArith(p, e, d, op) diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index a5ce147c3..e1734bc52 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -459,7 +459,6 @@ proc genWhileStmt(p: BProc, t: PNode) = # significantly worse code var a: TLoc - labl: TLabel assert(sonsLen(t) == 2) inc(p.withinLoop) genLineDir(p, t) @@ -757,16 +756,6 @@ proc genCase(p: BProc, t: PNode, d: var TLoc) = else: genOrdinalCase(p, t, d) -proc hasGeneralExceptSection(t: PNode): bool = - var length = sonsLen(t) - var i = 1 - while (i < length) and (t.sons[i].kind == nkExceptBranch): - var blen = sonsLen(t.sons[i]) - if blen == 1: - return true - inc(i) - result = false - proc genTryCpp(p: BProc, t: PNode, d: var TLoc) = # code to generate: # @@ -1089,7 +1078,6 @@ proc genDiscriminantCheck(p: BProc, a, tmp: TLoc, objtype: PType, proc asgnFieldDiscriminant(p: BProc, e: PNode) = var a, tmp: TLoc var dotExpr = e.sons[0] - var d: PSym if dotExpr.kind == nkCheckedFieldExpr: dotExpr = dotExpr.sons[0] initLocExpr(p, e.sons[0], a) getTemp(p, a.t, tmp) diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index 3d1c2affc..e30395d2e 100644 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -744,14 +744,6 @@ proc getClosureType(m: BModule, t: PType, kind: TClosureTypeKind): Rope = "void* ClEnv;$n} $1;$n", [result, rettype, desc]) -proc getTypeDesc(m: BModule, magic: string): Rope = - var sym = magicsys.getCompilerProc(magic) - if sym != nil: - result = getTypeDesc(m, sym.typ) - else: - rawMessage(errSystemNeeds, magic) - result = nil - proc finishTypeDescriptions(m: BModule) = var i = 0 while i < len(m.typeStack): @@ -1000,9 +992,6 @@ proc fakeClosureType(owner: PSym): PType = type TTypeInfoReason = enum ## for what do we need the type info? tiNew, ## for 'new' - tiNewSeq, ## for 'newSeq' - tiNonVariantAsgn, ## for generic assignment without variants - tiVariantAsgn ## for generic assignment with variants include ccgtrav diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 878ee1cd8..b68bf64bb 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -167,10 +167,6 @@ proc linefmt(p: BProc, s: TCProcSection, frmt: FormatStr, args: varargs[Rope]) = add(p.s(s), indentLine(p, ropecg(p.module, frmt, args))) -proc appLineCg(p: BProc, r: var Rope, frmt: FormatStr, - args: varargs[Rope]) = - add(r, indentLine(p, ropecg(p.module, frmt, args))) - proc safeLineNm(info: TLineInfo): int = result = toLinenumber(info) if result < 0: result = 0 # negative numbers are not allowed in #line @@ -259,8 +255,7 @@ proc genObjectInit(p: BProc, section: TCProcSection, t: PType, a: TLoc, type TAssignmentFlag = enum - needToCopy, needForSubtypeCheck, afDestIsNil, afDestIsNotNil, afSrcIsNil, - afSrcIsNotNil + needToCopy, afDestIsNil, afDestIsNotNil, afSrcIsNil, afSrcIsNotNil TAssignmentFlags = set[TAssignmentFlag] proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) @@ -595,9 +590,6 @@ proc generateHeaders(m: BModule) = addf(m.s[cfsHeaders], "#include $1$N", [rope(it.data)]) it = PStrEntry(it.next) -proc retIsNotVoid(s: PSym): bool = - result = (s.typ.sons[0] != nil) and not isInvalidReturnType(s.typ.sons[0]) - proc initFrame(p: BProc, procname, filename: Rope): Rope = discard cgsym(p.module, "nimFrame") if p.maxFrameLen > 0: diff --git a/compiler/extccomp.nim b/compiler/extccomp.nim index 2dcfc0226..6f8b0b197 100644 --- a/compiler/extccomp.nim +++ b/compiler/extccomp.nim @@ -505,10 +505,6 @@ proc noAbsolutePaths: bool {.inline.} = # `optGenMapping` is included here for niminst. result = gGlobalOptions * {optGenScript, optGenMapping} != {} -const - specialFileA = 42 - specialFileB = 42 - var fileCounter: int proc add(s: var string, many: openArray[string]) = diff --git a/compiler/idgen.nim b/compiler/idgen.nim index 333772705..c6b1a4d07 100644 --- a/compiler/idgen.nim +++ b/compiler/idgen.nim @@ -54,6 +54,6 @@ proc loadMaxIds*(project: string) = if f.readLine(line): var frontEndId = parseInt(line) if f.readLine(line): - var backEndId = parseInt(line) + # var backEndId = parseInt(line) gFrontEndId = max(gFrontEndId, frontEndId) f.close() diff --git a/compiler/lexer.nim b/compiler/lexer.nim index 0eee5004e..9c513034b 100644 --- a/compiler/lexer.nim +++ b/compiler/lexer.nim @@ -211,9 +211,6 @@ proc closeLexer*(lex: var TLexer) = inc(gLinesCompiled, lex.lineNumber) closeBaseLexer(lex) -proc getColumn(L: TLexer): int = - result = getColNumber(L, L.bufpos) - proc getLineInfo(L: TLexer): TLineInfo = result = newLineInfo(L.fileIdx, L.lineNumber, getColNumber(L, L.bufpos)) @@ -237,12 +234,6 @@ proc lexMessagePos(L: var TLexer, msg: TMsgKind, pos: int, arg = "") = proc matchTwoChars(L: TLexer, first: char, second: set[char]): bool = result = (L.buf[L.bufpos] == first) and (L.buf[L.bufpos + 1] in second) -proc isFloatLiteral(s: string): bool = - for i in countup(0, len(s) - 1): - if s[i] in {'.', 'e', 'E'}: - return true - result = false - {.push overflowChecks: off.} # We need to parse the largest uint literal without overflow checks proc unsafeParseUInt(s: string, b: var BiggestInt, start = 0): int = diff --git a/compiler/modules.nim b/compiler/modules.nim index 9120bd1b6..aa12325f4 100644 --- a/compiler/modules.nim +++ b/compiler/modules.nim @@ -38,9 +38,6 @@ proc getModule*(fileIdx: int32): PSym = if fileIdx >= 0 and fileIdx < gCompiledModules.len: result = gCompiledModules[fileIdx] -template hash(x: PSym): untyped = - gMemCacheData[x.position].hash - proc hashChanged(fileIdx: int32): bool = internalAssert fileIdx >= 0 and fileIdx < gMemCacheData.len @@ -220,12 +217,6 @@ proc includeModule*(s: PSym, fileIdx: int32): PNode {.procvar.} = addDep(s, fileIdx) doHash(fileIdx) -proc `==^`(a, b: string): bool = - try: - result = sameFile(a, b) - except OSError: - result = false - proc compileSystemModule* = if magicsys.systemModule == nil: systemFileIdx = fileInfoIdx(options.libpath/"system.nim") diff --git a/compiler/msgs.nim b/compiler/msgs.nim index 4a9980066..a926f0f49 100644 --- a/compiler/msgs.nim +++ b/compiler/msgs.nim @@ -660,8 +660,6 @@ const WarningColor = fgYellow HintTitle = "Hint: " HintColor = fgGreen - InfoTitle = "Info: " - InfoColor = fgCyan proc getInfoContextLen*(): int = return msgContext.len proc setInfoContextLen*(L: int) = setLen(msgContext, L) diff --git a/compiler/nimblecmd.nim b/compiler/nimblecmd.nim index c6c2ab058..9c5c17287 100644 --- a/compiler/nimblecmd.nim +++ b/compiler/nimblecmd.nim @@ -63,18 +63,6 @@ proc addNimblePath(p: string, info: TLineInfo) = message(info, hintPath, p) lists.prependStr(options.lazyPaths, p) -proc addPathWithNimFiles(p: string, info: TLineInfo) = - proc hasNimFile(dir: string): bool = - for kind, path in walkDir(dir): - if kind == pcFile and path.endsWith(".nim"): - result = true - break - if hasNimFile(p): - addNimblePath(p, info) - else: - for kind, p2 in walkDir(p): - if hasNimFile(p2): addNimblePath(p2, info) - proc addPathRec(dir: string, info: TLineInfo) = var packages = newStringTable(modeStyleInsensitive) var pos = dir.len-1 diff --git a/compiler/parser.nim b/compiler/parser.nim index 19ef0960a..40862eb63 100644 --- a/compiler/parser.nim +++ b/compiler/parser.nim @@ -340,26 +340,6 @@ proc parseSymbol(p: var TParser, allowNil = false): PNode = if not isKeyword(p.tok.tokType): getTok(p) result = ast.emptyNode -proc indexExpr(p: var TParser): PNode = - #| indexExpr = expr - result = parseExpr(p) - -proc indexExprList(p: var TParser, first: PNode, k: TNodeKind, - endToken: TTokType): PNode = - #| indexExprList = indexExpr ^+ comma - result = newNodeP(k, p) - addSon(result, first) - getTok(p) - optInd(p, result) - while p.tok.tokType notin {endToken, tkEof}: - var a = indexExpr(p) - addSon(result, a) - if p.tok.tokType != tkComma: break - getTok(p) - skipComment(p, a) - optPar(p) - eat(p, endToken) - proc colonOrEquals(p: var TParser, a: PNode): PNode = if p.tok.tokType == tkColon: result = newNodeP(nkExprColonExpr, p) diff --git a/compiler/renderer.nim b/compiler/renderer.nim index 0e733d643..a116a8afe 100644 --- a/compiler/renderer.nim +++ b/compiler/renderer.nim @@ -146,12 +146,6 @@ proc put(g: var TSrcGen, kind: TTokType, s: string) = else: g.pendingWhitespace = s.len -proc putLong(g: var TSrcGen, kind: TTokType, s: string, lineLen: int) = - # use this for tokens over multiple lines. - addPendingNL(g) - addTok(g, kind, s) - g.lineLen = lineLen - proc toNimChar(c: char): string = case c of '\0': result = "\\0" @@ -264,9 +258,6 @@ proc pushCom(g: var TSrcGen, n: PNode) = proc popAllComs(g: var TSrcGen) = setLen(g.comStack, 0) -proc popCom(g: var TSrcGen) = - setLen(g.comStack, len(g.comStack) - 1) - const Space = " " @@ -492,7 +483,7 @@ proc fits(g: TSrcGen, x: int): bool = type TSubFlag = enum - rfLongMode, rfNoIndent, rfInConstExpr + rfLongMode, rfInConstExpr TSubFlags = set[TSubFlag] TContext = tuple[spacing: int, flags: TSubFlags] @@ -675,16 +666,6 @@ proc gfor(g: var TSrcGen, n: PNode) = gcoms(g) gstmts(g, n.sons[length - 1], c) -proc gmacro(g: var TSrcGen, n: PNode) = - var c: TContext - initContext(c) - gsub(g, n.sons[0]) - putWithSpace(g, tkColon, ":") - if longMode(n) or (lsub(n.sons[1]) + g.lineLen > MaxLineLen): - incl(c.flags, rfLongMode) - gcoms(g) - gsons(g, n, c, 1) - proc gcase(g: var TSrcGen, n: PNode) = var c: TContext initContext(c) diff --git a/compiler/sem.nim b/compiler/sem.nim index 7db4ae47e..ccbd665e9 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -39,7 +39,6 @@ proc semStmt(c: PContext, n: PNode): PNode proc semParamList(c: PContext, n, genericParams: PNode, s: PSym) proc addParams(c: PContext, n: PNode, kind: TSymKind) proc maybeAddResult(c: PContext, s: PSym, n: PNode) -proc instGenericContainer(c: PContext, n: PNode, header: PType): PType proc tryExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode proc activate(c: PContext, n: PNode) proc semQuoteAst(c: PContext, n: PNode): PNode @@ -187,7 +186,6 @@ proc semIdentVis(c: PContext, kind: TSymKind, n: PNode, # identifier with visibility proc semIdentWithPragma(c: PContext, kind: TSymKind, n: PNode, allowed: TSymFlags): PSym -proc semStmtScope(c: PContext, n: PNode): PNode proc typeAllowedCheck(info: TLineInfo; typ: PType; kind: TSymKind) = let t = typeAllowed(typ, kind) diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index fc31829ba..99bfa9b51 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -414,8 +414,6 @@ proc arrayConstrType(c: PContext, n: PNode): PType = if sonsLen(n) == 0: rawAddSon(typ, newTypeS(tyEmpty, c)) # needs an empty basetype! else: - var x = n.sons[0] - var lastIndex: BiggestInt = sonsLen(n) - 1 var t = skipTypes(n.sons[0].typ, {tyGenericInst, tyVar, tyOrdinal}) addSonSkipIntLit(typ, t) typ.sons[0] = makeRangeType(c, 0, sonsLen(n) - 1, n.info) @@ -512,16 +510,6 @@ proc fixAbstractType(c: PContext, n: PNode) = #if (it.typ == nil): # InternalError(it.info, "fixAbstractType: " & renderTree(it)) -proc skipObjConv(n: PNode): PNode = - case n.kind - of nkHiddenStdConv, nkHiddenSubConv, nkConv: - if skipTypes(n.sons[1].typ, abstractPtrs).kind in {tyTuple, tyObject}: - result = n.sons[1] - else: - result = n - of nkObjUpConv, nkObjDownConv: result = n.sons[0] - else: result = n - proc isAssignable(c: PContext, n: PNode; isUnsafeAddr=false): TAssignableResult = result = parampatterns.isAssignable(c.p.owner, n, isUnsafeAddr) diff --git a/compiler/semfold.nim b/compiler/semfold.nim index 02f238ae6..1cb726053 100644 --- a/compiler/semfold.nim +++ b/compiler/semfold.nim @@ -458,32 +458,6 @@ proc getConstIfExpr(c: PSym, n: PNode): PNode = if result == nil: result = getConstExpr(c, it.sons[0]) else: internalError(it.info, "getConstIfExpr()") -proc partialAndExpr(c: PSym, n: PNode): PNode = - # partial evaluation - result = n - var a = getConstExpr(c, n.sons[1]) - var b = getConstExpr(c, n.sons[2]) - if a != nil: - if getInt(a) == 0: result = a - elif b != nil: result = b - else: result = n.sons[2] - elif b != nil: - if getInt(b) == 0: result = b - else: result = n.sons[1] - -proc partialOrExpr(c: PSym, n: PNode): PNode = - # partial evaluation - result = n - var a = getConstExpr(c, n.sons[1]) - var b = getConstExpr(c, n.sons[2]) - if a != nil: - if getInt(a) != 0: result = a - elif b != nil: result = b - else: result = n.sons[2] - elif b != nil: - if getInt(b) != 0: result = b - else: result = n.sons[1] - proc leValueConv(a, b: PNode): bool = result = false case a.kind diff --git a/compiler/seminst.nim b/compiler/seminst.nim index 460db4f7c..959908564 100644 --- a/compiler/seminst.nim +++ b/compiler/seminst.nim @@ -97,22 +97,6 @@ proc genericCacheGet(genericSym: PSym, entry: TInstantiation; if inst.compilesId == id and sameInstantiation(entry, inst[]): return inst.sym -proc removeDefaultParamValues(n: PNode) = - # we remove default params, because they cannot be instantiated properly - # and they are not needed anyway for instantiation (each param is already - # provided). - when false: - for i in countup(1, sonsLen(n)-1): - var a = n.sons[i] - if a.kind != nkIdentDefs: IllFormedAst(a) - var L = a.len - if a.sons[L-1].kind != nkEmpty and a.sons[L-2].kind != nkEmpty: - # ``param: typ = defaultVal``. - # We don't need defaultVal for semantic checking and it's wrong for - # ``cmp: proc (a, b: T): int = cmp``. Hm, for ``cmp = cmp`` that is - # not possible... XXX We don't solve this issue here. - a.sons[L-1] = ast.emptyNode - proc freshGenSyms(n: PNode, owner, orig: PSym, symMap: var TIdTable) = # we need to create a fresh set of gensym'ed symbols: if n.kind == nkSym and sfGenSym in n.sym.flags and n.sym.owner == orig: @@ -128,17 +112,6 @@ proc freshGenSyms(n: PNode, owner, orig: PSym, symMap: var TIdTable) = proc addParamOrResult(c: PContext, param: PSym, kind: TSymKind) -proc addProcDecls(c: PContext, fn: PSym) = - # get the proc itself in scope (e.g. for recursion) - addDecl(c, fn) - - for i in 1 .. Date: Thu, 11 Aug 2016 03:11:57 -0700 Subject: [PATCH 007/292] Add a workaround for threadpool deadlocks on recursion --- lib/pure/concurrency/threadpool.nim | 38 ++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/lib/pure/concurrency/threadpool.nim b/lib/pure/concurrency/threadpool.nim index 9490dbbd5..baa96cacd 100644 --- a/lib/pure/concurrency/threadpool.nim +++ b/lib/pure/concurrency/threadpool.nim @@ -297,9 +297,17 @@ var gSomeReady : Semaphore readyWorker: ptr Worker +# A workaround for recursion deadlock issue +# https://github.com/nim-lang/Nim/issues/4597 +var + numSlavesRunning: int + numSlavesWaiting: int + isSlave {.threadvar.}: bool + gSomeReady.initSemaphore() proc slave(w: ptr Worker) {.thread.} = + isSlave = true while true: when declared(atomicStoreN): atomicStoreN(addr(w.ready), true, ATOMIC_SEQ_CST) @@ -311,7 +319,11 @@ proc slave(w: ptr Worker) {.thread.} = # XXX Somebody needs to look into this (why does this assertion fail # in Visual Studio?) when not defined(vcc): assert(not w.ready) + + atomicInc numSlavesRunning w.f(w, w.data) + atomicDec numSlavesRunning + if w.q.len != 0: w.cleanFlowVars if w.shutdown: w.shutdown = false @@ -464,10 +476,30 @@ proc nimSpawn3(fn: WorkerProc; data: pointer) {.compilerProc.} = fn(self, data) await(self.taskStarted) return + + if isSlave and numSlavesRunning <= numSlavesWaiting + 1: + # All the other slaves are waiting + # If we wait now, we-re deadlocked until + # an external spawn happens ! + if currentPoolSize < maxPoolSize: + if not workersData[currentPoolSize].initialized: + activateWorkerThread(currentPoolSize) + let w = addr(workersData[currentPoolSize]) + atomicInc currentPoolSize + if selectWorker(w, fn, data): + return else: - await(gSomeReady) - else: - await(gSomeReady) + # There is no place in pool. We're deadlocked. + # echo "Deadlock!" + discard + + if isSlave: + atomicInc numSlavesWaiting + + await(gSomeReady) + + if isSlave: + atomicDec numSlavesWaiting var distinguishedLock: Lock From 21120a3e6cb8f9af0437e97d146b831b7e1a964f Mon Sep 17 00:00:00 2001 From: andri lim Date: Sat, 13 Aug 2016 20:26:25 +0700 Subject: [PATCH 008/292] fixed #4459 -- VS2010 error C2275 --- compiler/ccgstmts.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index a5ce147c3..9056a61cb 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -21,7 +21,7 @@ proc registerGcRoot(p: BProc, v: PSym) = # we register a specialized marked proc here; this has the advantage # that it works out of the box for thread local storage then :-) let prc = genTraverseProcForGlobal(p.module, v) - appcg(p.module, p.module.initProc.procSec(cpsStmts), + appcg(p.module, p.module.initProc.procSec(cpsInit), "#nimRegisterGlobalMarker($1);$n", [prc]) proc isAssignedImmediately(n: PNode): bool {.inline.} = From 8fca04027fe03109657b753b95ded86d2f65e6f3 Mon Sep 17 00:00:00 2001 From: Araq Date: Sat, 13 Aug 2016 22:06:32 +0200 Subject: [PATCH 009/292] some attempts to make symbolfiles work again --- compiler/canonicalizer.nim | 18 ++++++++++++------ compiler/nversion.nim | 2 +- compiler/options.nim | 6 ++++++ compiler/rodread.nim | 17 ++++++++++------- compiler/rodwrite.nim | 28 ++++++++++++---------------- 5 files changed, 41 insertions(+), 30 deletions(-) diff --git a/compiler/canonicalizer.nim b/compiler/canonicalizer.nim index 089bce302..2abe0a0e6 100644 --- a/compiler/canonicalizer.nim +++ b/compiler/canonicalizer.nim @@ -383,18 +383,28 @@ proc createDb() = interfHash varchar(256) not null, fullHash varchar(256) not null, - created timestamp not null default (DATETIME('now')), + created timestamp not null default (DATETIME('now')) );""") db.exec(sql""" + create table if not exists Backend( + id integer primary key, + strongdeps varchar(max) not null, + weakdeps varchar(max) not null, + header varchar(max) not null, + code varchar(max) not null + ) + create table if not exists Symbol( id integer primary key, module integer not null, + backend integer not null, name varchar(max) not null, data varchar(max) not null, created timestamp not null default (DATETIME('now')), - foreign key (module) references module(id) + foreign key (module) references Module(id), + foreign key (backend) references Backend(id) );""") db.exec(sql""" @@ -409,7 +419,3 @@ proc createDb() = );""") - #db.exec(sql""" - # --create unique index if not exists TsstNameIx on TestResult(name); - # """, []) - diff --git a/compiler/nversion.nim b/compiler/nversion.nim index adeb0fb6d..2af66f427 100644 --- a/compiler/nversion.nim +++ b/compiler/nversion.nim @@ -13,5 +13,5 @@ const MaxSetElements* = 1 shl 16 # (2^16) to support unicode character sets? VersionAsString* = system.NimVersion - RodFileVersion* = "1215" # modify this if the rod-format changes! + RodFileVersion* = "1216" # modify this if the rod-format changes! diff --git a/compiler/options.nim b/compiler/options.nim index a5154cb48..7cf707945 100644 --- a/compiler/options.nim +++ b/compiler/options.nim @@ -70,6 +70,12 @@ type # please make sure we have under 32 options optExcessiveStackTrace # fully qualified module filenames TGlobalOptions* = set[TGlobalOption] + +const + harmlessOptions* = {optForceFullMake, optNoLinking, optReportConceptFailures, + optRun, optUseColors, optStdout} + +type TCommands* = enum # Nim's commands # **keep binary compatible** cmdNone, cmdCompileToC, cmdCompileToCpp, cmdCompileToOC, diff --git a/compiler/rodread.nim b/compiler/rodread.nim index 004b30b41..e1fd46bf4 100644 --- a/compiler/rodread.nim +++ b/compiler/rodread.nim @@ -566,7 +566,8 @@ proc processRodFile(r: PRodReader, hash: SecureHash) = of "GOPTIONS": inc(r.pos) # skip ':' var dep = cast[TGlobalOptions](int32(decodeVInt(r.s, r.pos))) - if gGlobalOptions != dep: r.reason = rrOptions + if gGlobalOptions-harmlessOptions != dep-harmlessOptions: + r.reason = rrOptions of "CMD": inc(r.pos) # skip ':' var dep = cast[TCommands](int32(decodeVInt(r.s, r.pos))) @@ -580,14 +581,14 @@ proc processRodFile(r: PRodReader, hash: SecureHash) = if not condsyms.isDefined(getIdent(w)): r.reason = rrDefines #MessageOut('not defined, but should: ' + w); if r.s[r.pos] == ' ': inc(r.pos) - if (d != countDefinedSymbols()): r.reason = rrDefines + if d != countDefinedSymbols(): r.reason = rrDefines of "FILES": inc(r.pos, 2) # skip "(\10" inc(r.line) while r.s[r.pos] != ')': - let relativePath = decodeStr(r.s, r.pos) - let resolvedPath = relativePath.findModule(r.origFile) - let finalPath = if resolvedPath.len > 0: resolvedPath else: relativePath + let finalPath = decodeStr(r.s, r.pos) + #let resolvedPath = relativePath.findModule(r.origFile) + #let finalPath = if resolvedPath.len > 0: resolvedPath else: relativePath r.files.add(finalPath.fileInfoIdx) inc(r.pos) # skip #10 inc(r.line) @@ -683,8 +684,11 @@ proc newRodReader(modfilename: string, hash: SecureHash, if version != RodFileVersion: # since ROD files are only for caching, no backwards compatibility is # needed + #echo "expected version ", version, " ", RodFileVersion + result.memfile.close result = nil else: + result.memfile.close result = nil proc rrGetType(r: PRodReader, id: int, info: TLineInfo): PType = @@ -818,9 +822,8 @@ proc checkDep(fileIdx: int32): TReasonForRecompile = var hash = getHash(fileIdx) gMods[fileIdx].reason = rrNone # we need to set it here to avoid cycles result = rrNone - var r: PRodReader = nil var rodfile = toGeneratedFile(filename.withPackageName, RodExt) - r = newRodReader(rodfile, hash, fileIdx) + var r = newRodReader(rodfile, hash, fileIdx) if r == nil: result = (if existsFile(rodfile): rrRodInvalid else: rrRodDoesNotExist) else: diff --git a/compiler/rodwrite.nim b/compiler/rodwrite.nim index d48a9ba40..ab0774164 100644 --- a/compiler/rodwrite.nim +++ b/compiler/rodwrite.nim @@ -39,13 +39,6 @@ type PRodWriter = ref TRodWriter -proc newRodWriter(hash: SecureHash, module: PSym): PRodWriter -proc addModDep(w: PRodWriter, dep: string) -proc addInclDep(w: PRodWriter, dep: string) -proc addInterfaceSym(w: PRodWriter, s: PSym) -proc addStmt(w: PRodWriter, n: PNode) -proc writeRod(w: PRodWriter) - proc getDefines(): string = result = "" for d in definedSymbolNames(): @@ -86,16 +79,17 @@ proc newRodWriter(hash: SecureHash, module: PSym): PRodWriter = result.origFile = module.info.toFilename result.data = newStringOfCap(12_000) -proc addModDep(w: PRodWriter, dep: string) = +proc addModDep(w: PRodWriter, dep: string; info: TLineInfo) = if w.modDeps.len != 0: add(w.modDeps, ' ') - encodeVInt(fileIdx(w, dep), w.modDeps) + let resolved = dep.findModule(info.toFullPath) + encodeVInt(fileIdx(w, resolved), w.modDeps) const rodNL = "\x0A" -proc addInclDep(w: PRodWriter, dep: string) = - var resolved = dep.findModule(w.module.info.toFullPath) - encodeVInt(fileIdx(w, dep), w.inclDeps) +proc addInclDep(w: PRodWriter, dep: string; info: TLineInfo) = + let resolved = dep.findModule(info.toFullPath) + encodeVInt(fileIdx(w, resolved), w.inclDeps) add(w.inclDeps, " ") encodeStr($secureHashFile(resolved), w.inclDeps) add(w.inclDeps, rodNL) @@ -147,7 +141,7 @@ proc encodeNode(w: PRodWriter, fInfo: TLineInfo, n: PNode, encodeVInt(n.typ.id, result) pushType(w, n.typ) case n.kind - of nkCharLit..nkInt64Lit: + of nkCharLit..nkUInt64Lit: if n.intVal != 0: result.add('!') encodeVBiggestInt(n.intVal, result) @@ -562,13 +556,15 @@ proc process(c: PPassContext, n: PNode): PNode = # addInterfaceSym(w, a.sons[j].sym); # end of nkImportStmt: - for i in countup(0, sonsLen(n) - 1): addModDep(w, getModuleName(n.sons[i])) + for i in countup(0, sonsLen(n) - 1): + addModDep(w, getModuleName(n.sons[i]), n.info) addStmt(w, n) of nkFromStmt: - addModDep(w, getModuleName(n.sons[0])) + addModDep(w, getModuleName(n.sons[0]), n.info) addStmt(w, n) of nkIncludeStmt: - for i in countup(0, sonsLen(n) - 1): addInclDep(w, getModuleName(n.sons[i])) + for i in countup(0, sonsLen(n) - 1): + addInclDep(w, getModuleName(n.sons[i]), n.info) of nkPragma: addStmt(w, n) else: From a13cb26c4084d83df1d4627e5b842c050ed69177 Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 16 Aug 2016 20:04:27 +0200 Subject: [PATCH 010/292] next steps in getting symbol files to work again --- compiler/ast.nim | 9 +--- compiler/cgen.nim | 2 +- compiler/nversion.nim | 2 +- compiler/pragmas.nim | 2 + compiler/rodread.nim | 76 +++++++++++++++++++++++++++++----- compiler/rodwrite.nim | 72 ++++++++++++++++++++++++++------ lib/system.nim | 5 +-- tests/rodfiles/gtkex1.nim | 6 +-- tests/rodfiles/gtkex2.nim | 6 +-- tests/rodfiles/int2bool.nim | 1 - tests/testament/categories.nim | 5 +-- 11 files changed, 140 insertions(+), 46 deletions(-) diff --git a/compiler/ast.nim b/compiler/ast.nim index 277a21ba5..75491af6b 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -725,8 +725,8 @@ type s*: TStorageLoc flags*: TLocFlags # location's flags t*: PType # type of location - r*: Rope # rope value of location (code generators) - heapRoot*: Rope # keeps track of the enclosing heap object that + r*: Rope # rope value of location (code generators) + heapRoot*: Rope # keeps track of the enclosing heap object that # owns this location (required by GC algorithms # employing heap snapshots or sliding views) @@ -746,10 +746,6 @@ type TInstantiation* = object sym*: PSym concreteTypes*: seq[PType] - usedBy*: seq[int32] # list of modules using the generic - # needed in caas mode for purging the cache - # XXX: it's possible to switch to a - # simple ref count here compilesId*: CompilesId PInstantiation* = ref TInstantiation @@ -767,7 +763,6 @@ type case kind*: TSymKind of skType, skGenericParam: typeInstCache*: seq[PType] - typScope*: PScope of routineKinds: procInstCache*: seq[PInstantiation] gcUnsafetyReason*: PSym # for better error messages wrt gcsafe diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 9851ab0e2..810f7dfd4 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -1020,7 +1020,7 @@ proc genInitCode(m: BModule) = var procname = makeCString(m.module.name.s) add(prc, initFrame(m.initProc, procname, m.module.info.quotedFilename)) else: - add(prc, ~"\tTFrame F; FR.len = 0;$N") + add(prc, ~"\tTFrame FR; FR.len = 0;$N") add(prc, genSectionStart(cpsInit)) add(prc, m.preInitProc.s(cpsInit)) diff --git a/compiler/nversion.nim b/compiler/nversion.nim index 2af66f427..55e337969 100644 --- a/compiler/nversion.nim +++ b/compiler/nversion.nim @@ -13,5 +13,5 @@ const MaxSetElements* = 1 shl 16 # (2^16) to support unicode character sets? VersionAsString* = system.NimVersion - RodFileVersion* = "1216" # modify this if the rod-format changes! + RodFileVersion* = "1218" # modify this if the rod-format changes! diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim index 1f93f5317..a4c95e1b7 100644 --- a/compiler/pragmas.nim +++ b/compiler/pragmas.nim @@ -572,11 +572,13 @@ proc deprecatedStmt(c: PContext; pragma: PNode) = for n in pragma: if n.kind in {nkExprColonExpr, nkExprEqExpr}: let dest = qualifiedLookUp(c, n[1], {checkUndeclared}) + assert dest != nil let src = considerQuotedIdent(n[0]) let alias = newSym(skAlias, src, dest, n[0].info) incl(alias.flags, sfExported) if sfCompilerProc in dest.flags: markCompilerProc(alias) addInterfaceDecl(c, alias) + n.sons[1] = newSymNode(dest) else: localError(n.info, "key:value pair expected") diff --git a/compiler/rodread.nim b/compiler/rodread.nim index e1fd46bf4..679e7ba15 100644 --- a/compiler/rodread.nim +++ b/compiler/rodread.nim @@ -145,13 +145,7 @@ type PRodReader* = ref TRodReader -var rodCompilerprocs*: TStrTable - -proc handleSymbolFile*(module: PSym): PRodReader -# global because this is needed by magicsys -proc loadInitSection*(r: PRodReader): PNode - -# implementation +var rodCompilerprocs*: TStrTable # global because this is needed by magicsys proc rawLoadStub(s: PSym) @@ -206,7 +200,7 @@ proc decodeNodeLazyBody(r: PRodReader, fInfo: TLineInfo, var id = decodeVInt(r.s, r.pos) result.typ = rrGetType(r, id, result.info) case result.kind - of nkCharLit..nkInt64Lit: + of nkCharLit..nkUInt64Lit: if r.s[r.pos] == '!': inc(r.pos) result.intVal = decodeVBiggestInt(r.s, r.pos) @@ -324,6 +318,29 @@ proc decodeType(r: PRodReader, info: TLineInfo): PType = result.align = decodeVInt(r.s, r.pos).int16 else: result.align = 2 + + if r.s[r.pos] == '\14': + inc(r.pos) + result.lockLevel = decodeVInt(r.s, r.pos).TLockLevel + else: + result.lockLevel = UnspecifiedLockLevel + + if r.s[r.pos] == '\15': + inc(r.pos) + result.destructor = rrGetSym(r, decodeVInt(r.s, r.pos), info) + if r.s[r.pos] == '\16': + inc(r.pos) + result.deepCopy = rrGetSym(r, decodeVInt(r.s, r.pos), info) + if r.s[r.pos] == '\17': + inc(r.pos) + result.assignment = rrGetSym(r, decodeVInt(r.s, r.pos), info) + while r.s[r.pos] == '\18': + inc(r.pos) + let x = decodeVInt(r.s, r.pos) + doAssert r.s[r.pos] == '\19' + inc(r.pos) + let y = rrGetSym(r, decodeVInt(r.s, r.pos), info) + result.methods.safeAdd((x, y)) decodeLoc(r, result.loc, info) while r.s[r.pos] == '^': inc(r.pos) @@ -349,6 +366,22 @@ proc decodeLib(r: PRodReader, info: TLineInfo): PLib = inc(r.pos) result.path = decodeNode(r, info) +proc decodeInstantiations(r: PRodReader; info: TLineInfo; + s: var seq[PInstantiation]) = + while r.s[r.pos] == '\15': + inc(r.pos) + var ii: PInstantiation + new ii + ii.sym = rrGetSym(r, decodeVInt(r.s, r.pos), info) + ii.concreteTypes = @[] + while r.s[r.pos] == '\17': + inc(r.pos) + ii.concreteTypes.add rrGetType(r, decodeVInt(r.s, r.pos), info) + if r.s[r.pos] == '\20': + inc(r.pos) + ii.compilesId = decodeVInt(r.s, r.pos) + s.safeAdd ii + proc decodeSym(r: PRodReader, info: TLineInfo): PSym = var id: int @@ -423,6 +456,27 @@ proc decodeSym(r: PRodReader, info: TLineInfo): PSym = if r.s[r.pos] == '#': inc(r.pos) result.constraint = decodeNode(r, unknownLineInfo()) + case result.kind + of skType, skGenericParam: + while r.s[r.pos] == '\14': + inc(r.pos) + result.typeInstCache.safeAdd rrGetType(r, decodeVInt(r.s, r.pos), result.info) + of routineKinds: + decodeInstantiations(r, result.info, result.procInstCache) + if r.s[r.pos] == '\16': + inc(r.pos) + result.gcUnsafetyReason = rrGetSym(r, decodeVInt(r.s, r.pos), result.info) + of skModule, skPackage: + decodeInstantiations(r, result.info, result.usedGenerics) + of skLet, skVar, skField, skForVar: + if r.s[r.pos] == '\18': + inc(r.pos) + result.guard = rrGetSym(r, decodeVInt(r.s, r.pos), result.info) + if r.s[r.pos] == '\19': + inc(r.pos) + result.bitsize = decodeVInt(r.s, r.pos).int16 + else: discard + if r.s[r.pos] == '(': if result.kind in routineKinds: result.ast = decodeNodeLazyBody(r, result.info, result) @@ -766,7 +820,7 @@ proc rrGetSym(r: PRodReader, id: int, info: TLineInfo): PSym = result = decodeSymSafePos(r, d, info) if result != nil and result.kind == skStub: rawLoadStub(result) -proc loadInitSection(r: PRodReader): PNode = +proc loadInitSection*(r: PRodReader): PNode = if r.initIdx == 0 or r.dataIdx == 0: internalError("loadInitSection") var oldPos = r.pos r.pos = r.initIdx @@ -850,7 +904,7 @@ proc checkDep(fileIdx: int32): TReasonForRecompile = gMods[fileIdx].rd = r gMods[fileIdx].reason = result # now we know better -proc handleSymbolFile(module: PSym): PRodReader = +proc handleSymbolFile*(module: PSym): PRodReader = let fileIdx = module.fileIdx if optSymbolFiles notin gGlobalOptions: module.id = getID() @@ -926,7 +980,7 @@ proc writeNode(f: File; n: PNode) = f.write('^') f.write(n.typ.id) case n.kind - of nkCharLit..nkInt64Lit: + of nkCharLit..nkUInt64Lit: if n.intVal != 0: f.write('!') f.write(n.intVal) diff --git a/compiler/rodwrite.nim b/compiler/rodwrite.nim index ab0774164..557b1dabf 100644 --- a/compiler/rodwrite.nim +++ b/compiler/rodwrite.nim @@ -16,8 +16,6 @@ import condsyms, ropes, idents, securehash, rodread, passes, importer, idgen, rodutils -# implementation - type TRodWriter = object of TPassContext module: PSym @@ -223,6 +221,28 @@ proc encodeType(w: PRodWriter, t: PType, result: var string) = if t.align != 2: add(result, '=') encodeVInt(t.align, result) + if t.lockLevel.ord != UnspecifiedLockLevel.ord: + add(result, '\14') + encodeVInt(t.lockLevel.int16, result) + + if t.destructor != nil: + add(result, '\15') + encodeVInt(t.destructor.id, result) + pushSym(w, t.destructor) + if t.deepCopy != nil: + add(result, '\16') + encodeVInt(t.deepcopy.id, result) + pushSym(w, t.deepcopy) + if t.assignment != nil: + add(result, '\17') + encodeVInt(t.assignment.id, result) + pushSym(w, t.assignment) + for i, s in items(t.methods): + add(result, '\18') + encodeVInt(i, result) + add(result, '\19') + encodeVInt(s.id, result) + pushSym(w, s) encodeLoc(w, t.loc, result) for i in countup(0, sonsLen(t) - 1): if t.sons[i] == nil: @@ -240,6 +260,19 @@ proc encodeLib(w: PRodWriter, lib: PLib, info: TLineInfo, result: var string) = add(result, '|') encodeNode(w, info, lib.path, result) +proc encodeInstantiations(w: PRodWriter; s: seq[PInstantiation]; + result: var string) = + for t in s: + result.add('\15') + encodeVInt(t.sym.id, result) + pushSym(w, t.sym) + for tt in t.concreteTypes: + result.add('\17') + encodeVInt(tt.id, result) + pushType(w, tt) + result.add('\20') + encodeVInt(t.compilesId, result) + proc encodeSym(w: PRodWriter, s: PSym, result: var string) = if s == nil: # nil nodes have to be stored too: @@ -285,6 +318,31 @@ proc encodeSym(w: PRodWriter, s: PSym, result: var string) = if s.constraint != nil: add(result, '#') encodeNode(w, unknownLineInfo(), s.constraint, result) + case s.kind + of skType, skGenericParam: + for t in s.typeInstCache: + result.add('\14') + encodeVInt(t.id, result) + pushType(w, t) + of routineKinds: + encodeInstantiations(w, s.procInstCache, result) + if s.gcUnsafetyReason != nil: + result.add('\16') + encodeVInt(s.gcUnsafetyReason.id, result) + pushSym(w, s.gcUnsafetyReason) + of skModule, skPackage: + encodeInstantiations(w, s.usedGenerics, result) + # we don't serialize: + #tab*: TStrTable # interface table for modules + of skLet, skVar, skField, skForVar: + if s.guard != nil: + result.add('\18') + encodeVInt(s.guard.id, result) + pushSym(w, s.guard) + if s.bitsize != 0: + result.add('\19') + encodeVInt(s.bitsize, result) + else: discard # lazy loading will soon reload the ast lazily, so the ast needs to be # the last entry of a symbol: if s.ast != nil: @@ -292,16 +350,6 @@ proc encodeSym(w: PRodWriter, s: PSym, result: var string) = # it is not necessary, but Nim's heavy compile-time evaluation features # make that unfeasible nowadays: encodeNode(w, s.info, s.ast, result) - when false: - var codeAst: PNode = nil - if not astNeeded(s): - codeAst = s.ast.sons[codePos] - # ugly hack to not store the AST: - s.ast.sons[codePos] = ast.emptyNode - encodeNode(w, s.info, s.ast, result) - if codeAst != nil: - # resore the AST: - s.ast.sons[codePos] = codeAst proc addToIndex(w: var TIndex, key, val: int) = if key - w.lastIdxKey == 1: diff --git a/lib/system.nim b/lib/system.nim index 82980d9da..62405e521 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1831,9 +1831,6 @@ const NimVersion*: string = $NimMajor & "." & $NimMinor & "." & $NimPatch ## is the version of Nim as a string. -{.deprecated: [TEndian: Endianness, NimrodVersion: NimVersion, - NimrodMajor: NimMajor, NimrodMinor: NimMinor, NimrodPatch: NimPatch].} - # GC interface: when not defined(nimscript) and hasAlloc: @@ -3681,4 +3678,4 @@ when defined(nimconfig): when defined(windows) and appType == "console" and not defined(nimconfig): proc setConsoleOutputCP(codepage: cint): cint {.stdcall, dynlib: "kernel32", importc: "SetConsoleOutputCP".} - discard setConsoleOutputCP(65001) # 65001 - utf-8 codepage \ No newline at end of file + discard setConsoleOutputCP(65001) # 65001 - utf-8 codepage diff --git a/tests/rodfiles/gtkex1.nim b/tests/rodfiles/gtkex1.nim index 156ba5322..50779cb9e 100644 --- a/tests/rodfiles/gtkex1.nim +++ b/tests/rodfiles/gtkex1.nim @@ -1,12 +1,12 @@ import cairo, glib2, gtk2 -proc destroy(widget: pWidget, data: pgpointer) {.cdecl.} = +proc destroy(widget: PWidget, data: Pgpointer) {.cdecl.} = main_quit() var - window: pWidget -nimrod_init() + window: PWidget +nim_init() window = window_new(WINDOW_TOPLEVEL) discard signal_connect(window, "destroy", SIGNAL_FUNC(gtkex1.destroy), nil) diff --git a/tests/rodfiles/gtkex2.nim b/tests/rodfiles/gtkex2.nim index 70926bd50..0949e4872 100644 --- a/tests/rodfiles/gtkex2.nim +++ b/tests/rodfiles/gtkex2.nim @@ -2,17 +2,17 @@ import glib2, gtk2 -proc destroy(widget: pWidget, data: pgpointer){.cdecl.} = +proc destroy(widget: PWidget, data: Pgpointer){.cdecl.} = main_quit() var window: PWidget button: PWidget -nimrod_init() +nim_init() window = window_new(WINDOW_TOPLEVEL) button = button_new("Click me") -set_border_width(PContainer(Window), 5) +set_border_width(PContainer(window), 5) add(PContainer(window), button) discard signal_connect(window, "destroy", SIGNAL_FUNC(gtkex2.destroy), nil) diff --git a/tests/rodfiles/int2bool.nim b/tests/rodfiles/int2bool.nim index 0f6fd14e6..bb0682844 100644 --- a/tests/rodfiles/int2bool.nim +++ b/tests/rodfiles/int2bool.nim @@ -2,7 +2,6 @@ {.overflowchecks: on.} converter uglyToBool*(x: int): bool = - {.Breakpoint.} result = x != 0 diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index e534cc161..eebf18f54 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -369,9 +369,8 @@ proc `&?.`(a, b: string): string = proc processCategory(r: var TResults, cat: Category, options: string, fileGlob: string = "t*.nim") = case cat.string.normalize of "rodfiles": - discard # Disabled for now - #compileRodFiles(r, cat, options) - #runRodFiles(r, cat, options) + compileRodFiles(r, cat, options) + runRodFiles(r, cat, options) of "js": # XXX JS doesn't need to be special anymore jsTests(r, cat, options) From 618e264b5812f1b215fab9672300f492275c4f38 Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Wed, 17 Aug 2016 18:58:35 +0800 Subject: [PATCH 011/292] remove TLoc.heapRoot --- compiler/ast.nim | 3 --- compiler/ccgexprs.nim | 5 ----- 2 files changed, 8 deletions(-) diff --git a/compiler/ast.nim b/compiler/ast.nim index a5357b2b4..5ed458aff 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -726,9 +726,6 @@ type flags*: TLocFlags # location's flags t*: PType # type of location r*: Rope # rope value of location (code generators) - heapRoot*: Rope # keeps track of the enclosing heap object that - # owns this location (required by GC algorithms - # employing heap snapshots or sliding views) # ---------------- end of backend information ------------------------------ diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 4761b725c..dccb89d6b 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -203,7 +203,6 @@ proc optAsgnLoc(a: TLoc, t: PType, field: Rope): TLoc = result.s = a.s result.t = t result.r = rdLoc(a) & "." & field - result.heapRoot = a.heapRoot proc genOptAsgnTuple(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = let newflags = @@ -698,8 +697,6 @@ proc genAddr(p: BProc, e: PNode, d: var TLoc) = template inheritLocation(d: var TLoc, a: TLoc) = if d.k == locNone: d.s = a.s - if d.heapRoot == nil: - d.heapRoot = if a.heapRoot != nil: a.heapRoot else: a.r proc genRecordFieldAux(p: BProc, e: PNode, d, a: var TLoc): PType = initLocExpr(p, e.sons[0], a) @@ -863,7 +860,6 @@ proc genSeqElem(p: BProc, x, y: PNode, d: var TLoc) = "if ((NU)($1) >= (NU)($2->$3)) #raiseIndexError();$n", rdLoc(b), rdLoc(a), lenField(p)) if d.k == locNone: d.s = OnHeap - d.heapRoot = a.r if skipTypes(a.t, abstractVar).kind in {tyRef, tyPtr}: a.r = rfmt(nil, "(*$1)", a.r) putIntoDest(p, d, elemType(skipTypes(a.t, abstractVar)), @@ -1166,7 +1162,6 @@ proc genObjConstr(p: BProc, e: PNode, d: var TLoc) = tmp2.k = locTemp tmp2.t = field.loc.t tmp2.s = if isRef: OnHeap else: OnStack - tmp2.heapRoot = tmp.r expr(p, it.sons[1], tmp2) if d.k == locNone: From 68680a9880db4187acb616b9f1b98ad4a3965efd Mon Sep 17 00:00:00 2001 From: Felix Krause Date: Fri, 19 Aug 2016 12:34:10 +0200 Subject: [PATCH 012/292] Calculate correct yearday in times.parse --- lib/pure/times.nim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/pure/times.nim b/lib/pure/times.nim index d6eb29e1c..b78a2b966 100644 --- a/lib/pure/times.nim +++ b/lib/pure/times.nim @@ -1248,8 +1248,11 @@ proc parse*(value, layout: string): TimeInfo = else: parseToken(info, token, value, j) token = "" - # Reset weekday as it might not have been provided and the default may be wrong - info.weekday = getLocalTime(toTime(info)).weekday + # Reset weekday (might not have been provided and the default may be wrong) + # and yearday (is never provided directly and therefore probably wrong) + let processed = getLocalTime(toTime(info)) + info.weekday = processed.weekday + info.yearday = processed.yearday return info # Leap year calculations are adapted from: From b0c12a7dc4065372960a696907947812b4c01e0d Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sun, 21 Aug 2016 12:41:55 +1000 Subject: [PATCH 013/292] Optimise pickBestCandidate: reduce heap allocations. --- compiler/semcall.nim | 104 ++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 61 deletions(-) diff --git a/compiler/semcall.nim b/compiler/semcall.nim index 97209167d..b83872fe9 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -40,67 +40,49 @@ proc pickBestCandidate(c: PContext, headSymbol: PNode, filter: TSymKinds, best, alt: var TCandidate, errors: var CandidateErrors) = - var o: TOverloadIter - # thanks to the lazy semchecking for operands, we need to iterate over the - # symbol table *before* any call to 'initCandidate' which might invoke - # semExpr which might modify the symbol table in cases like - # 'init(a, 1, (var b = new(Type2); b))'. - var symx = initOverloadIter(o, c, headSymbol) - let symScope = o.lastOverloadScope - - var syms: seq[tuple[a: PSym, b: int]] = @[] - while symx != nil: - if symx.kind in filter: - syms.add((symx, o.lastOverloadScope)) - symx = nextOverloadIter(o, c, headSymbol) - if syms.len == 0: - when false: - if skIterator notin filter: - # also try iterators, but these are 2nd class: - symx = initOverloadIter(o, c, headSymbol) - while symx != nil: - if symx.kind == skIterator: - syms.add((symx, 100)) - symx = nextOverloadIter(o, c, headSymbol) - if syms.len == 0: return - else: - return - - var z: TCandidate - initCandidate(c, best, syms[0][0], initialBinding, symScope) - initCandidate(c, alt, syms[0][0], initialBinding, symScope) - best.state = csNoMatch - - for i in 0 .. Date: Sun, 21 Aug 2016 14:19:22 +0200 Subject: [PATCH 014/292] Improved times tests * Added check for yearday * Changed some test dates to check different equivalence classes of yearday (before leap day, at leap day, after february in leap year, after february in non-leap year) --- tests/stdlib/ttime.nim | 70 +++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/tests/stdlib/ttime.nim b/tests/stdlib/ttime.nim index ac37196fb..3ab287c4e 100644 --- a/tests/stdlib/ttime.nim +++ b/tests/stdlib/ttime.nim @@ -39,55 +39,49 @@ doAssert t4.format("M MM MMM MMMM") == "10 10 Oct October" doAssert((t4 - initInterval(years = 2)).format("yyyy") == "1995") doAssert((t4 - initInterval(years = 7, minutes = 34, seconds = 24)).format("yyyy mm ss") == "1990 24 10") -var s = "Tuesday at 09:04am on Dec 15, 2015" -var f = "dddd at hh:mmtt on MMM d, yyyy" -doAssert($s.parse(f) == "Tue Dec 15 09:04:00 2015") +proc parseTest(s, f, sExpected: string, ydExpected: int) = + let parsed = s.parse(f) + doAssert($parsed == sExpected) + doAssert(parsed.yearday == ydExpected) +proc parseTestTimeOnly(s, f, sExpected: string) = + doAssert(sExpected in $s.parse(f)) + +parseTest("Tuesday at 09:04am on Dec 15, 2015", + "dddd at hh:mmtt on MMM d, yyyy", "Tue Dec 15 09:04:00 2015", 348) # ANSIC = "Mon Jan _2 15:04:05 2006" -s = "Thu Jan 12 15:04:05 2006" -f = "ddd MMM dd HH:mm:ss yyyy" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("Thu Jan 12 15:04:05 2006", "ddd MMM dd HH:mm:ss yyyy", + "Thu Jan 12 15:04:05 2006", 11) # UnixDate = "Mon Jan _2 15:04:05 MST 2006" -s = "Thu Jan 12 15:04:05 MST 2006" -f = "ddd MMM dd HH:mm:ss ZZZ yyyy" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("Thu Jan 12 15:04:05 MST 2006", "ddd MMM dd HH:mm:ss ZZZ yyyy", + "Thu Jan 12 15:04:05 2006", 11) # RubyDate = "Mon Jan 02 15:04:05 -0700 2006" -s = "Thu Jan 12 15:04:05 -07:00 2006" -f = "ddd MMM dd HH:mm:ss zzz yyyy" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("Mon Feb 29 15:04:05 -07:00 2016", "ddd MMM dd HH:mm:ss zzz yyyy", + "Mon Feb 29 15:04:05 2016", 59) # leap day # RFC822 = "02 Jan 06 15:04 MST" -s = "12 Jan 16 15:04 MST" -f = "dd MMM yy HH:mm ZZZ" -doAssert($s.parse(f) == "Tue Jan 12 15:04:00 2016") +parseTest("12 Jan 16 15:04 MST", "dd MMM yy HH:mm ZZZ", + "Tue Jan 12 15:04:00 2016", 11) # RFC822Z = "02 Jan 06 15:04 -0700" # RFC822 with numeric zone -s = "12 Jan 16 15:04 -07:00" -f = "dd MMM yy HH:mm zzz" -doAssert($s.parse(f) == "Tue Jan 12 15:04:00 2016") +parseTest("01 Mar 16 15:04 -07:00", "dd MMM yy HH:mm zzz", + "Tue Mar 1 15:04:00 2016", 60) # day after february in leap year # RFC850 = "Monday, 02-Jan-06 15:04:05 MST" -s = "Monday, 12-Jan-06 15:04:05 MST" -f = "dddd, dd-MMM-yy HH:mm:ss ZZZ" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("Monday, 12-Jan-06 15:04:05 MST", "dddd, dd-MMM-yy HH:mm:ss ZZZ", + "Thu Jan 12 15:04:05 2006", 11) # RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" -s = "Thu, 12 Jan 2006 15:04:05 MST" -f = "ddd, dd MMM yyyy HH:mm:ss ZZZ" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("Sun, 01 Mar 2015 15:04:05 MST", "ddd, dd MMM yyyy HH:mm:ss ZZZ", + "Sun Mar 1 15:04:05 2015", 59) # day after february in non-leap year # RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" # RFC1123 with numeric zone -s = "Thu, 12 Jan 2006 15:04:05 -07:00" -f = "ddd, dd MMM yyyy HH:mm:ss zzz" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("Thu, 12 Jan 2006 15:04:05 -07:00", "ddd, dd MMM yyyy HH:mm:ss zzz", + "Thu Jan 12 15:04:05 2006", 11) # RFC3339 = "2006-01-02T15:04:05Z07:00" -s = "2006-01-12T15:04:05Z-07:00" -f = "yyyy-MM-ddTHH:mm:ssZzzz" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") -f = "yyyy-MM-dd'T'HH:mm:ss'Z'zzz" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("2006-01-12T15:04:05Z-07:00", "yyyy-MM-ddTHH:mm:ssZzzz", + "Thu Jan 12 15:04:05 2006", 11) +parseTest("2006-01-12T15:04:05Z-07:00", "yyyy-MM-dd'T'HH:mm:ss'Z'zzz", + "Thu Jan 12 15:04:05 2006", 11) # RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" -s = "2006-01-12T15:04:05.999999999Z-07:00" -f = "yyyy-MM-ddTHH:mm:ss.999999999Zzzz" -doAssert($s.parse(f) == "Thu Jan 12 15:04:05 2006") +parseTest("2006-01-12T15:04:05.999999999Z-07:00", + "yyyy-MM-ddTHH:mm:ss.999999999Zzzz", "Thu Jan 12 15:04:05 2006", 11) # Kitchen = "3:04PM" -s = "3:04PM" -f = "h:mmtt" -doAssert "15:04:00" in $s.parse(f) +parseTestTimeOnly("3:04PM", "h:mmtt", "15:04:00") #when not defined(testing): # echo "Kitchen: " & $s.parse(f) # var ti = timeToTimeInfo(getTime()) From 7e342ec4a12e57dbf74be8c550d0aacb8d7c6c18 Mon Sep 17 00:00:00 2001 From: Felix Krause Date: Tue, 23 Aug 2016 19:23:58 +0200 Subject: [PATCH 015/292] unittest: Output suite name, nice formatting --- lib/pure/unittest.nim | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/pure/unittest.nim b/lib/pure/unittest.nim index 92ddc3e75..0fc2e441e 100644 --- a/lib/pure/unittest.nim +++ b/lib/pure/unittest.nim @@ -77,6 +77,15 @@ checkpoints = @[] proc shouldRun(testName: string): bool = result = true +proc startSuite(name: string) = + template rawPrint() = echo("\n[Suite] ", name) + when not defined(ECMAScript): + if colorOutput: + styledEcho styleBright, fgBlue, "\n[Suite] ", fgWhite, name + else: rawPrint() + else: rawPrint() + + template suite*(name, body) {.dirty.} = ## Declare a test suite identified by `name` with optional ``setup`` ## and/or ``teardown`` section. @@ -103,9 +112,11 @@ template suite*(name, body) {.dirty.} = ## ## .. code-block:: ## - ## [OK] 2 + 2 = 4 - ## [OK] (2 + -2) != 4 + ## [Suite] test suite for addition + ## [OK] 2 + 2 = 4 + ## [OK] (2 + -2) != 4 block: + bind startSuite template setup(setupBody: untyped) {.dirty.} = var testSetupIMPLFlag = true template testSetupIMPL: untyped {.dirty.} = setupBody @@ -114,14 +125,16 @@ template suite*(name, body) {.dirty.} = var testTeardownIMPLFlag = true template testTeardownIMPL: untyped {.dirty.} = teardownBody + let testInSuiteImplFlag = true + startSuite name body -proc testDone(name: string, s: TestStatus) = +proc testDone(name: string, s: TestStatus, indent: bool) = if s == FAILED: programResult += 1 - + let prefix = if indent: " " else: "" if outputLevel != PRINT_NONE and (outputLevel == PRINT_ALL or s == FAILED): - template rawPrint() = echo("[", $s, "] ", name) + template rawPrint() = echo(prefix, "[", $s, "] ", name) when not defined(ECMAScript): if colorOutput and not defined(ECMAScript): var color = case s @@ -129,7 +142,7 @@ proc testDone(name: string, s: TestStatus) = of FAILED: fgRed of SKIPPED: fgYellow else: fgWhite - styledEcho styleBright, color, "[", $s, "] ", fgWhite, name + styledEcho styleBright, color, prefix, "[", $s, "] ", fgWhite, name else: rawPrint() else: @@ -168,7 +181,7 @@ template test*(name, body) {.dirty.} = fail() finally: - testDone name, testStatusIMPL + testDone name, testStatusIMPL, declared(testInSuiteImplFlag) proc checkpoint*(msg: string) = ## Set a checkpoint identified by `msg`. Upon test failure all @@ -198,8 +211,9 @@ template fail* = ## ## outputs "Checkpoint A" before quitting. bind checkpoints + let prefix = if declared(testInSuiteImplFlag): " " else: "" for msg in items(checkpoints): - echo msg + echo prefix, msg when not defined(ECMAScript): if abortOnError: quit(1) From 885543e43e67b4f27e01d1b55fa239e33664fec9 Mon Sep 17 00:00:00 2001 From: Dmitry Polienko Date: Wed, 24 Aug 2016 22:01:37 +0700 Subject: [PATCH 016/292] Add a lock to prevent race condition --- lib/pure/concurrency/threadpool.nim | 55 +++++++++++++++++------------ 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/lib/pure/concurrency/threadpool.nim b/lib/pure/concurrency/threadpool.nim index baa96cacd..8cdb83e19 100644 --- a/lib/pure/concurrency/threadpool.nim +++ b/lib/pure/concurrency/threadpool.nim @@ -300,10 +300,13 @@ var # A workaround for recursion deadlock issue # https://github.com/nim-lang/Nim/issues/4597 var - numSlavesRunning: int - numSlavesWaiting: int + numSlavesLock: Lock + numSlavesRunning {.guard: numSlavesLock}: int + numSlavesWaiting {.guard: numSlavesLock}: int isSlave {.threadvar.}: bool +numSlavesLock.initLock + gSomeReady.initSemaphore() proc slave(w: ptr Worker) {.thread.} = @@ -320,9 +323,13 @@ proc slave(w: ptr Worker) {.thread.} = # in Visual Studio?) when not defined(vcc): assert(not w.ready) - atomicInc numSlavesRunning + withLock numSlavesLock: + inc numSlavesRunning + w.f(w, w.data) - atomicDec numSlavesRunning + + withLock numSlavesLock: + dec numSlavesRunning if w.q.len != 0: w.cleanFlowVars if w.shutdown: @@ -477,29 +484,33 @@ proc nimSpawn3(fn: WorkerProc; data: pointer) {.compilerProc.} = await(self.taskStarted) return - if isSlave and numSlavesRunning <= numSlavesWaiting + 1: - # All the other slaves are waiting - # If we wait now, we-re deadlocked until - # an external spawn happens ! - if currentPoolSize < maxPoolSize: - if not workersData[currentPoolSize].initialized: - activateWorkerThread(currentPoolSize) - let w = addr(workersData[currentPoolSize]) - atomicInc currentPoolSize - if selectWorker(w, fn, data): - return - else: - # There is no place in pool. We're deadlocked. - # echo "Deadlock!" - discard - if isSlave: - atomicInc numSlavesWaiting + # Run under lock until `numSlavesWaiting` increment to avoid a + # race (otherwise two last threads might start waiting together) + withLock numSlavesLock: + if numSlavesRunning <= numSlavesWaiting + 1: + # All the other slaves are waiting + # If we wait now, we-re deadlocked until + # an external spawn happens ! + if currentPoolSize < maxPoolSize: + if not workersData[currentPoolSize].initialized: + activateWorkerThread(currentPoolSize) + let w = addr(workersData[currentPoolSize]) + atomicInc currentPoolSize + if selectWorker(w, fn, data): + return + else: + # There is no place in the pool. We're deadlocked. + # echo "Deadlock!" + discard + + inc numSlavesWaiting await(gSomeReady) if isSlave: - atomicDec numSlavesWaiting + withLock numSlavesLock: + dec numSlavesWaiting var distinguishedLock: Lock From 74a55995f0635caaf6bfd71ef8d04b2148469cec Mon Sep 17 00:00:00 2001 From: Felix Krause Date: Wed, 24 Aug 2016 22:32:29 +0200 Subject: [PATCH 017/292] Fixed tests to expect [Suite] output from unittest --- tests/stdlib/tnet_ll.nim | 3 +++ tests/stdlib/tparseuints.nim | 2 ++ 2 files changed, 5 insertions(+) diff --git a/tests/stdlib/tnet_ll.nim b/tests/stdlib/tnet_ll.nim index 4d4df7c13..2ac272fd1 100644 --- a/tests/stdlib/tnet_ll.nim +++ b/tests/stdlib/tnet_ll.nim @@ -1,5 +1,8 @@ discard """ action: run + output: ''' +[Suite] inet_ntop tests +''' """ when defined(windows): diff --git a/tests/stdlib/tparseuints.nim b/tests/stdlib/tparseuints.nim index 5be3bcbd0..6b228d933 100644 --- a/tests/stdlib/tparseuints.nim +++ b/tests/stdlib/tparseuints.nim @@ -1,5 +1,7 @@ discard """ action: run + output: ''' +[Suite] parseutils''' """ import unittest, strutils From eeb8024af49526378755b7b92185bb820cfffc2b Mon Sep 17 00:00:00 2001 From: Felix Krause Date: Wed, 24 Aug 2016 23:37:43 +0200 Subject: [PATCH 018/292] Fixed another test to expect new unittest output --- tests/js/tunittests.nim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/js/tunittests.nim b/tests/js/tunittests.nim index 4b09c99a9..7c2e70563 100644 --- a/tests/js/tunittests.nim +++ b/tests/js/tunittests.nim @@ -1,5 +1,7 @@ discard """ - output: '''[OK] >:)''' + output: ''' +[Suite] Bacon + [OK] >:)''' """ import unittest From f1e4d8ed74549a868be58c15fc8cfe04159c52fd Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 25 Aug 2016 16:33:38 +0200 Subject: [PATCH 019/292] side-effect computation now done in the proper pass; fixes #4254 --- compiler/semexprs.nim | 9 --------- compiler/seminst.nim | 7 ++++--- compiler/sempass2.nim | 34 ++++++++++++++++++++++++++++++++-- tests/effects/tsidee4.nim | 6 +++--- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index fc31829ba..e3552f94e 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -701,9 +701,6 @@ proc semOverloadedCallAnalyseEffects(c: PContext, n: PNode, nOrig: PNode, # error correction, prevents endless for loop elimination in transf. # See bug #2051: result.sons[0] = newSymNode(errorSym(c, n)) - if sfNoSideEffect notin callee.flags: - if {sfImportc, sfSideEffect} * callee.flags != {}: - incl(c.p.owner.flags, sfSideEffect) proc semObjConstr(c: PContext, n: PNode, flags: TExprFlags): PNode @@ -804,9 +801,6 @@ proc semIndirectOp(c: PContext, n: PNode, flags: TExprFlags): PNode = else: result = m.call instGenericConvertersSons(c, result, m) - # we assume that a procedure that calls something indirectly - # has side-effects: - if tfNoSideEffect notin t.flags: incl(c.p.owner.flags, sfSideEffect) elif t != nil and t.kind == tyTypeDesc: if n.len == 1: return semObjConstr(c, n, flags) return semConv(c, n) @@ -1040,9 +1034,6 @@ proc semSym(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode = markUsed(n.info, s) styleCheckUse(n.info, s) - # if a proc accesses a global variable, it is not side effect free: - if sfGlobal in s.flags: - incl(c.p.owner.flags, sfSideEffect) result = newSymNode(s, n.info) # We cannot check for access to outer vars for example because it's still # not sure the symbol really ends up being used: diff --git a/compiler/seminst.nim b/compiler/seminst.nim index 460db4f7c..a57b8e520 100644 --- a/compiler/seminst.nim +++ b/compiler/seminst.nim @@ -172,9 +172,10 @@ proc fixupInstantiatedSymbols(c: PContext, s: PSym) = popInfoContext() proc sideEffectsCheck(c: PContext, s: PSym) = - if {sfNoSideEffect, sfSideEffect} * s.flags == - {sfNoSideEffect, sfSideEffect}: - localError(s.info, errXhasSideEffects, s.name.s) + when false: + if {sfNoSideEffect, sfSideEffect} * s.flags == + {sfNoSideEffect, sfSideEffect}: + localError(s.info, errXhasSideEffects, s.name.s) proc instGenericContainer(c: PContext, info: TLineInfo, header: PType, allowMetaTypes = false): PType = diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim index b12ab5e96..6d2e82ef0 100644 --- a/compiler/sempass2.nim +++ b/compiler/sempass2.nim @@ -59,7 +59,7 @@ type init: seq[int] # list of initialized variables guards: TModel # nested guards locked: seq[PNode] # locked locations - gcUnsafe, isRecursive, isToplevel: bool + gcUnsafe, isRecursive, isToplevel, hasSideEffect: bool maxLockLevel, currLockLevel: TLockLevel PEffects = var TEffects @@ -192,6 +192,14 @@ proc markGcUnsafe(a: PEffects; reason: PNode) = a.owner.gcUnsafetyReason = newSym(skUnknown, getIdent(""), a.owner, reason.info) +when true: + template markSideEffect(a: PEffects; reason: typed) = + a.hasSideEffect = true +else: + template markSideEffect(a: PEffects; reason: typed) = + a.hasSideEffect = true + markGcUnsafe(a, reason) + proc listGcUnsafety(s: PSym; onlyWarning: bool; cycleCheck: var IntSet) = let u = s.gcUnsafetyReason if u != nil and not cycleCheck.containsOrIncl(u.id): @@ -226,12 +234,16 @@ proc useVar(a: PEffects, n: PNode) = message(n.info, warnUninit, s.name.s) # prevent superfluous warnings about the same variable: a.init.add s.id - if {sfGlobal, sfThread} * s.flags != {} and s.kind in {skVar, skLet}: + if {sfGlobal, sfThread} * s.flags != {} and s.kind in {skVar, skLet} and + s.magic != mNimVm: if s.guard != nil: guardGlobal(a, n, s.guard) if {sfGlobal, sfThread} * s.flags == {sfGlobal} and (tfHasGCedMem in s.typ.flags or s.typ.isGCedMem): #if warnGcUnsafe in gNotes: warnAboutGcUnsafe(n) markGcUnsafe(a, s) + else: + markSideEffect(a, s) + type TIntersection = seq[tuple[id, count: int]] # a simple count table @@ -495,6 +507,8 @@ proc propagateEffects(tracked: PEffects, n: PNode, s: PSym) = if notGcSafe(s.typ) and sfImportc notin s.flags: if warnGcUnsafe in gNotes: warnAboutGcUnsafe(n) markGcUnsafe(tracked, s) + if tfNoSideEffect notin s.typ.flags: + markSideEffect(tracked, s) mergeLockLevels(tracked, n, s.getLockLevel) proc notNilCheck(tracked: PEffects, n: PNode, paramType: PType) = @@ -550,12 +564,16 @@ proc trackOperand(tracked: PEffects, n: PNode, paramType: PType) = if notGcSafe(op) and not isOwnedProcVar(a, tracked.owner): if warnGcUnsafe in gNotes: warnAboutGcUnsafe(n) markGcUnsafe(tracked, a) + elif tfNoSideEffect notin op.flags and not isOwnedProcVar(a, tracked.owner): + markSideEffect(tracked, a) else: mergeEffects(tracked, effectList.sons[exceptionEffects], n) mergeTags(tracked, effectList.sons[tagEffects], n) if notGcSafe(op): if warnGcUnsafe in gNotes: warnAboutGcUnsafe(n) markGcUnsafe(tracked, a) + elif tfNoSideEffect notin op.flags: + markSideEffect(tracked, a) notNilCheck(tracked, n, paramType) proc breaksBlock(n: PNode): bool = @@ -684,6 +702,7 @@ proc track(tracked: PEffects, n: PNode) = if a.sym == tracked.owner: tracked.isRecursive = true # even for recursive calls we need to check the lock levels (!): mergeLockLevels(tracked, n, a.sym.getLockLevel) + if sfSideEffect in a.sym.flags: markSideEffect(tracked, a) else: mergeLockLevels(tracked, n, op.lockLevel) var effectList = op.n.sons[0] @@ -702,6 +721,10 @@ proc track(tracked: PEffects, n: PNode) = if not (a.kind == nkSym and a.sym == tracked.owner): if warnGcUnsafe in gNotes: warnAboutGcUnsafe(n) markGcUnsafe(tracked, a) + if tfNoSideEffect notin op.flags and not importedFromC(a): + # and it's not a recursive call: + if not (a.kind == nkSym and a.sym == tracked.owner): + markSideEffect(tracked, a) for i in 1 .. s.typ.lockLevel: diff --git a/tests/effects/tsidee4.nim b/tests/effects/tsidee4.nim index 2cb88a23e..ecc79580c 100644 --- a/tests/effects/tsidee4.nim +++ b/tests/effects/tsidee4.nim @@ -1,13 +1,13 @@ discard """ file: "tsidee4.nim" - line: 15 - errormsg: "type mismatch" + line: 12 + errormsg: "'noSideEffect' can have side effects" """ var global: int -proc dontcare(x: int): int = return x +proc dontcare(x: int): int = return global proc noSideEffect(x, y: int, p: proc (a: int): int {.noSideEffect.}): int {.noSideEffect.} = return x + y + dontcare(x) From 54cc7023511fcd0cf72fcdd18c1af30cb0901b2a Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 25 Aug 2016 17:21:48 +0200 Subject: [PATCH 020/292] update stdlib to not use deprecated symbols --- lib/core/macros.nim | 12 ++++++------ lib/pure/unicode.nim | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/core/macros.nim b/lib/core/macros.nim index 4296cb0ae..19452b4a8 100644 --- a/lib/core/macros.nim +++ b/lib/core/macros.nim @@ -333,7 +333,7 @@ proc parseStmt*(s: string): NimNode {.noSideEffect, compileTime.} = let x = internalErrorFlag() if x.len > 0: raise newException(ValueError, x) -proc getAst*(macroOrTemplate: expr): NimNode {.magic: "ExpandToAst", noSideEffect.} +proc getAst*(macroOrTemplate: untyped): NimNode {.magic: "ExpandToAst", noSideEffect.} ## Obtains the AST nodes returned from a macro or template invocation. ## Example: ## @@ -342,7 +342,7 @@ proc getAst*(macroOrTemplate: expr): NimNode {.magic: "ExpandToAst", noSideEffec ## macro FooMacro() = ## var ast = getAst(BarTemplate()) -proc quote*(bl: stmt, op = "``"): NimNode {.magic: "QuoteAst", noSideEffect.} +proc quote*(bl: typed, op = "``"): NimNode {.magic: "QuoteAst", noSideEffect.} ## Quasi-quoting operator. ## Accepts an expression or a block and returns the AST that represents it. ## Within the quoted AST, you are able to interpolate NimNode expressions @@ -663,7 +663,7 @@ proc copyChildrenTo*(src, dest: NimNode) {.compileTime.}= for i in 0 .. < src.len: dest.add src[i].copyNimTree -template expectRoutine(node: NimNode): stmt = +template expectRoutine(node: NimNode) = expectKind(node, RoutineNodes) proc name*(someProc: NimNode): NimNode {.compileTime.} = @@ -870,7 +870,7 @@ proc hasArgOfName* (params: NimNode; name: string): bool {.compiletime.}= ## Search nnkFormalParams for an argument. assert params.kind == nnkFormalParams for i in 1 .. blockPos: result[newPos] = s[j] From d1e199e0d89c48628a5452551d50b145b0302ed8 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 25 Aug 2016 20:21:08 +0200 Subject: [PATCH 021/292] make tests green again --- tests/array/troof2.nim | 4 ++-- tests/bind/tnicerrorforsymchoice.nim | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/array/troof2.nim b/tests/array/troof2.nim index d4c1a4982..e4b4f4b3c 100644 --- a/tests/array/troof2.nim +++ b/tests/array/troof2.nim @@ -2,8 +2,8 @@ discard """ errormsg: "invalid context for '^' as 'foo()' has side effects" line: "9" """ - -proc foo(): seq[int] = +# XXX This needs to be fixed properly! +proc foo(): seq[int] {.sideEffect.} = echo "ha" let f = foo()[^1] diff --git a/tests/bind/tnicerrorforsymchoice.nim b/tests/bind/tnicerrorforsymchoice.nim index 5145fdcff..bd00188fa 100644 --- a/tests/bind/tnicerrorforsymchoice.nim +++ b/tests/bind/tnicerrorforsymchoice.nim @@ -1,6 +1,6 @@ discard """ line: 18 - errormsg: "type mismatch: got (proc (s: TScgi) | proc (client: AsyncSocket, headers: StringTableRef, input: string){.gcsafe, locks: 0.}" + errormsg: "type mismatch: got (proc (s: TScgi) | proc (client: AsyncSocket, headers: StringTableRef, input: string){.noSideEffect, gcsafe, locks: 0.}" """ #bug #442 From 9b365ddfddc14f3387134948d1828d1d515a44b1 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 25 Aug 2016 20:28:21 +0200 Subject: [PATCH 022/292] json module: use ordered tables instead of ordinary tables --- lib/pure/json.nim | 40 +++++++++++++++++------------- web/news/version_0_15_released.rst | 2 ++ 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/pure/json.nim b/lib/pure/json.nim index 19947fbc2..c76bbc3b5 100644 --- a/lib/pure/json.nim +++ b/lib/pure/json.nim @@ -580,7 +580,7 @@ type of JNull: nil of JObject: - fields*: Table[string, JsonNode] + fields*: OrderedTable[string, JsonNode] of JArray: elems*: seq[JsonNode] @@ -630,7 +630,7 @@ proc newJObject*(): JsonNode = ## Creates a new `JObject JsonNode` new(result) result.kind = JObject - result.fields = initTable[string, JsonNode](4) + result.fields = initOrderedTable[string, JsonNode](4) proc newJArray*(): JsonNode = ## Creates a new `JArray JsonNode` @@ -670,8 +670,8 @@ proc getBVal*(n: JsonNode, default: bool = false): bool = else: return n.bval proc getFields*(n: JsonNode, - default = initTable[string, JsonNode](4)): - Table[string, JsonNode] = + default = initOrderedTable[string, JsonNode](4)): + OrderedTable[string, JsonNode] = ## Retrieves the key, value pairs of a `JObject JsonNode`. ## ## Returns ``default`` if ``n`` is not a ``JObject``, or if ``n`` is nil. @@ -760,12 +760,12 @@ proc toJson(x: NimNode): NimNode {.compiletime.} = result = prefix(result, "%") -macro `%*`*(x: expr): expr = +macro `%*`*(x: untyped): untyped = ## Convert an expression to a JsonNode directly, without having to specify ## `%` for every element. result = toJson(x) -proc `==`* (a,b: JsonNode): bool = +proc `==`* (a, b: JsonNode): bool = ## Check two nodes for equality if a.isNil: if b.isNil: return true @@ -773,23 +773,29 @@ proc `==`* (a,b: JsonNode): bool = elif b.isNil or a.kind != b.kind: return false else: - return case a.kind + case a.kind of JString: - a.str == b.str + result = a.str == b.str of JInt: - a.num == b.num + result = a.num == b.num of JFloat: - a.fnum == b.fnum + result = a.fnum == b.fnum of JBool: - a.bval == b.bval + result = a.bval == b.bval of JNull: - true + result = true of JArray: - a.elems == b.elems + result = a.elems == b.elems of JObject: - a.fields == b.fields + # we cannot use OrderedTable's equality here as + # the order does not matter for equality here. + if a.fields.len != b.fields.len: return false + for key, val in a.fields: + if not b.fields.hasKey(key): return false + if b.fields[key] != val: return false + result = true -proc hash*(n: Table[string, JsonNode]): Hash {.noSideEffect.} +proc hash*(n: OrderedTable[string, JsonNode]): Hash {.noSideEffect.} proc hash*(n: JsonNode): Hash = ## Compute the hash for a JSON node @@ -807,9 +813,9 @@ proc hash*(n: JsonNode): Hash = of JString: result = hash(n.str) of JNull: - result = hash(0) + result = Hash(0) -proc hash*(n: Table[string, JsonNode]): Hash = +proc hash*(n: OrderedTable[string, JsonNode]): Hash = for key, val in n: result = result xor (hash(key) !& hash(val)) result = !$result diff --git a/web/news/version_0_15_released.rst b/web/news/version_0_15_released.rst index 1e35fb627..2b1b216b8 100644 --- a/web/news/version_0_15_released.rst +++ b/web/news/version_0_15_released.rst @@ -10,6 +10,8 @@ Some text here. Changes affecting backwards compatibility ----------------------------------------- +- The ``json`` module uses an ``OrderedTable`` rather than a ``Table`` + for JSON objects. - De-deprecated ``re.nim`` because we have too much code using it and it got the basic API right. From b9322010e935e0f42894e3b69127f1e19a4a5a62 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 25 Aug 2016 21:56:21 +0200 Subject: [PATCH 023/292] make tests green again --- tests/closure/tclosure4.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/closure/tclosure4.nim b/tests/closure/tclosure4.nim index 69c076cd5..bc134ded6 100644 --- a/tests/closure/tclosure4.nim +++ b/tests/closure/tclosure4.nim @@ -1,7 +1,7 @@ import json, tables, sequtils -proc run(json_params: Table) = +proc run(json_params: OrderedTable) = let json_elems = json_params["files"].elems # These fail compilation. var files = map(json_elems, proc (x: JsonNode): string = x.str) From 89f3e21fc876e589de62f81aa1aa67e36eacc22e Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 13:02:52 +0200 Subject: [PATCH 024/292] fixes #4658 --- compiler/semstmts.nim | 5 +++++ tests/generics/tlamba_in_generic.nim | 13 +++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 tests/generics/tlamba_in_generic.nim diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index f836d1803..f1f863924 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -1396,6 +1396,11 @@ proc semMacroDef(c: PContext, n: PNode): PNode = if namePos >= result.safeLen: return result var s = result.sons[namePos].sym var t = s.typ + var allUntyped = true + for i in 1 .. t.n.len-1: + let param = t.n.sons[i].sym + if param.typ.kind != tyExpr: allUntyped = false + if allUntyped: incl(s.flags, sfAllUntyped) if t.sons[0] == nil: localError(n.info, errXNeedsReturnType, "macro") if n.sons[bodyPos].kind == nkEmpty: localError(n.info, errImplOfXexpected, s.name.s) diff --git a/tests/generics/tlamba_in_generic.nim b/tests/generics/tlamba_in_generic.nim new file mode 100644 index 000000000..91d417b5e --- /dev/null +++ b/tests/generics/tlamba_in_generic.nim @@ -0,0 +1,13 @@ +discard """ + output: '''!!Hi!!''' +""" +# bug #4658 +import future + +var x = 123 + +proc twice[T](f: T -> T): T -> T = (x: T) => f(f(x)) + +proc quote(s: string): string = "!" & s & "!" + +echo twice(quote)("Hi") From e16bd735c48464ef5efcc48afbcbbd49cbf3cc74 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 13:23:15 +0200 Subject: [PATCH 025/292] explicit side-effects override the inferred effect; refs #4659 --- compiler/sempass2.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim index a8fb9ef91..3908fa26e 100644 --- a/compiler/sempass2.nim +++ b/compiler/sempass2.nim @@ -935,7 +935,7 @@ proc trackProc*(s: PSym, body: PNode) = localError(s.info, errXhasSideEffects, s.name.s) if not t.gcUnsafe: s.typ.flags.incl tfGcSafe - if not t.hasSideEffect: + if not t.hasSideEffect and sfSideEffect notin s.flags: s.typ.flags.incl tfNoSideEffect if s.typ.lockLevel == UnspecifiedLockLevel: s.typ.lockLevel = t.maxLockLevel From 969981c1da0e07d9d6867609a335c625779c04c3 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 13:32:52 +0200 Subject: [PATCH 026/292] fixes #3606 --- compiler/ast.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/ast.nim b/compiler/ast.nim index 5ed458aff..d301417ac 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -1497,7 +1497,7 @@ proc hasSubnodeWith*(n: PNode, kind: TNodeKind): bool = proc getInt*(a: PNode): BiggestInt = case a.kind - of nkIntLit..nkUInt64Lit: result = a.intVal + of nkCharLit..nkUInt64Lit: result = a.intVal else: internalError(a.info, "getInt") result = 0 From 4d4a993e7f47354b3de80c3f307a7a8d2b50e99b Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 13:51:58 +0200 Subject: [PATCH 027/292] fixes #2865 --- compiler/types.nim | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/types.nim b/compiler/types.nim index ca2718ed1..c06e906e5 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -653,7 +653,14 @@ proc lengthOrd(t: PType): BiggestInt = case t.kind of tyInt64, tyInt32, tyInt: result = lastOrd(t) of tyDistinct, tyConst, tyMutable: result = lengthOrd(t.sons[0]) - else: result = lastOrd(t) - firstOrd(t) + 1 + else: + let last = lastOrd t + let first = firstOrd t + # XXX use a better overflow check here: + if last == high(BiggestInt) and first <= 0: + result = last + else: + result = lastOrd(t) - firstOrd(t) + 1 # -------------- type equality ----------------------------------------------- From 1d1253c87f2cba4e498db48d16cbe88fb0d8850b Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 14:04:56 +0200 Subject: [PATCH 028/292] fixes #4253 --- compiler/types.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/types.nim b/compiler/types.nim index c06e906e5..4690d5a1f 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -1057,10 +1057,10 @@ proc typeAllowedNode(marker: var IntSet, n: PNode, kind: TSymKind, of nkNone..nkNilLit: discard else: + if n.kind == nkRecCase and kind in {skProc, skConst}: + return n[0].typ for i in countup(0, sonsLen(n) - 1): let it = n.sons[i] - if it.kind == nkRecCase and kind in {skProc, skConst}: - return n.typ result = typeAllowedNode(marker, it, kind, flags) if result != nil: break From 98859a72486038995f66d499f76172bb6e670a22 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 14:36:46 +0200 Subject: [PATCH 029/292] fixes #4292 --- compiler/sigmatch.nim | 9 +-------- tests/template/ttemp_in_varargs.nim | 9 +++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 tests/template/ttemp_in_varargs.nim diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index ec429968c..949d4dc19 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -1310,7 +1310,7 @@ proc localConvMatch(c: PContext, m: var TCandidate, f, a: PType, var call = newNodeI(nkCall, arg.info) call.add(f.n.copyTree) call.add(arg.copyTree) - result = c.semOverloadedCall(c, call, call, routineKinds) + result = c.semExpr(c, call) if result != nil: # resulting type must be consistent with the other arguments: var r = typeRel(m, f.sons[0], result.typ) @@ -1320,13 +1320,6 @@ proc localConvMatch(c: PContext, m: var TCandidate, f, a: PType, if r == isGeneric: result.typ = getInstantiatedType(c, arg, m, base(f)) m.baseTypeMatch = true - # bug #4545: allow the call to go through a 'var T': - let vt = result.sons[0].typ.sons[1] - if vt.kind == tyVar: - let x = result.sons[1] - let va = newNodeIT(nkHiddenAddr, x.info, vt) - va.add x - result.sons[1] = va proc incMatches(m: var TCandidate; r: TTypeRelation; convMatch = 1) = case r diff --git a/tests/template/ttemp_in_varargs.nim b/tests/template/ttemp_in_varargs.nim new file mode 100644 index 000000000..be78e6ef2 --- /dev/null +++ b/tests/template/ttemp_in_varargs.nim @@ -0,0 +1,9 @@ +discard """ + output: '''a''' +""" + +# bug #4292 + +template foo(s: string): string = s +proc variadicProc*(v: varargs[string, foo]) = echo v[0] +variadicProc("a") From 34dd08e9ae56b0003fc4ea32262b5284cfd21c41 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 14:49:57 +0200 Subject: [PATCH 030/292] added missing test files --- tests/macros/tgettype2.nim | 67 ++++++++++++++++++++++++++++++++ tests/metatype/twildtypedesc.nim | 43 ++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 tests/macros/tgettype2.nim create mode 100644 tests/metatype/twildtypedesc.nim diff --git a/tests/macros/tgettype2.nim b/tests/macros/tgettype2.nim new file mode 100644 index 000000000..f129e6e1b --- /dev/null +++ b/tests/macros/tgettype2.nim @@ -0,0 +1,67 @@ + +import macros, typetraits + +type Foo = distinct int +type Bar = distinct int +type Baz = int + +let foo = 0.Foo +let bar = 1.Bar +let baz = 2.Baz + +type MyType[T] = distinct tuple[a,b:T] +type MySimpleType = distinct tuple[a,b: int] + +var v: seq[int] +var vv: seq[float] +var t: MyType[int] +var tt: MyType[float] +var s: MySimpleType + +echo "############" +echo "#### gt ####" +echo "############" + +macro gt(a: typed): string = + let b = a.getType + var str = "gt(" & $a & "):\t" & b.repr + if b.kind == nnkSym: # bad predicat to check weather the type has an implementation + str = str & ", " & b.getType.repr # append the implementation to the result + result = newLit(str) + +echo gt(Foo) # typeDesc[Foo] +echo gt(Bar) # typeDesc[Bar] +echo gt(Baz) # typeDesc[int] shouldn't it be typeDesc[Baz]? +echo gt(foo) # distinct[int] I would prefer Foo, distinct[int] +echo gt(bar) # distinct[int] I would prefer Bar, distinct[int] +echo gt(baz) # int, int I would prefer Baz, int + +echo gt(v) # seq[int], ok +echo gt(vv) # seq[float], ok +echo gt(t) # MyType, distinct[tuple[int, int]] I would prefer MyType[int], distinct[tuple[int, int]] +echo gt(tt) # MyType, distinct[tuple[float, float]] I would prefer MyType[float], distinct[tuple[int, int]] +echo gt(s) # distinct[tuple[int, int]] I would prefer MySimpleType, distinct[tuple[int,int]] + +echo "#############" +echo "#### gt2 ####" +echo "#############" + +# get type name via typetraits + +macro gt2(a: typed): string = + let prefix = "gt2(" & $a & "): \t" + result = quote do: + `prefix` & `a`.type.name + +echo gt2(Foo) # Foo shouldn't this be typeDesc[Foo] ? +echo gt2(Bar) # Bar shouldn't this be typeDesc[Bar] ? +echo gt2(Baz) # Baz shouldn't this be typeDesc[Baz] ? +echo gt2(foo) # Foo +echo gt2(bar) # Bar +echo gt2(baz) # Baz + +echo gt2(v) # seq[int] +echo gt2(vv) # seq[float] +echo gt2(t) # MyType[system.int] why is it system.int and not just int like in seq? +echo gt2(tt) # MyType[system.float] why is it system.float and not just float like in seq? +echo gt2(s) # MySimpleType diff --git a/tests/metatype/twildtypedesc.nim b/tests/metatype/twildtypedesc.nim new file mode 100644 index 000000000..268bff0d8 --- /dev/null +++ b/tests/metatype/twildtypedesc.nim @@ -0,0 +1,43 @@ +discard """ + output: '''123 +123 +123 +123 +123 +123''' +""" + +import strutils + +proc unpack(t: typedesc[string], v: string): string = $v +proc unpack(t: typedesc[int], v: string): int = parseInt(v) + +proc unpack[T](v: string): T = + unpack T, v + +var s = "123" + +assert(unpack[string](s) is string) +assert(unpack[int](s) is int) + +echo unpack[int](s) +echo unpack[string](s) + +echo unpack(int,s) +echo unpack(string,s) + +template `as`*(x: untyped, t: typedesc): untyped = unpack(t,x) + +echo s as int +echo s as string + +# bug #4534 + +proc unit(t: typedesc[int]): t = 0 +proc unit(t: typedesc[string]): t = "" +proc unit(t: typedesc[float]): t = 0.0 + +assert unit(int) == 0 +assert unit(string) == "" +assert unit(float) == 0.0 + From be4748eb5728f2fe9fdfa2c56f6abbd617e55a83 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 14:57:59 +0200 Subject: [PATCH 031/292] do not crash on #3928 --- compiler/sigmatch.nim | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index 949d4dc19..7cdaa197d 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -1312,6 +1312,7 @@ proc localConvMatch(c: PContext, m: var TCandidate, f, a: PType, call.add(arg.copyTree) result = c.semExpr(c, call) if result != nil: + if result.typ == nil: return nil # resulting type must be consistent with the other arguments: var r = typeRel(m, f.sons[0], result.typ) if r < isGeneric: return nil From d3888577e9f0802abfcc92b9b7bda8b7f45996ed Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 15:15:18 +0200 Subject: [PATCH 032/292] fixes #3928 --- compiler/semcall.nim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler/semcall.nim b/compiler/semcall.nim index b83872fe9..19c3f0bf9 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -444,3 +444,6 @@ proc searchForBorrowProc(c: PContext, startScope: PScope, fn: PSym): PSym = var resolved = semOverloadedCall(c, call, call, {fn.kind}) if resolved != nil: result = resolved.sons[0].sym + if not compareTypes(result.typ.sons[0], fn.typ.sons[0], dcEqIgnoreDistinct): + result = nil + From 71a1bbffd73f4cc53aaee2fa824018e5b7a709a4 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 15:16:02 +0200 Subject: [PATCH 033/292] koch boot: use different nimcaches for release and debug builds --- koch.nim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/koch.nim b/koch.nim index 04f6a4e4e..eb25a7480 100644 --- a/koch.nim +++ b/koch.nim @@ -244,11 +244,13 @@ proc boot(args: string) = var finalDest = "bin" / "nim".exe # default to use the 'c' command: let bootOptions = if args.len == 0 or args.startsWith("-"): "c" else: "" + let smartNimcache = if "release" in args: "rnimcache" else: "dnimcache" copyExe(findStartNim(), 0.thVersion) for i in 0..2: echo "iteration: ", i+1 - exec i.thVersion & " $# $# compiler" / "nim.nim" % [bootOptions, args] + exec i.thVersion & " $# $# --nimcache:$# compiler" / "nim.nim" % [bootOptions, args, + smartNimcache] if sameFileContent(output, i.thVersion): copyExe(output, finalDest) echo "executables are equal: SUCCESS!" From 1690b912ca32fa990bd852ca827475b02129c609 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 15:16:11 +0200 Subject: [PATCH 034/292] test case cleanup --- tests/distinct/tcurrncy.nim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/distinct/tcurrncy.nim b/tests/distinct/tcurrncy.nim index 7ad4caea4..2675de739 100644 --- a/tests/distinct/tcurrncy.nim +++ b/tests/distinct/tcurrncy.nim @@ -2,7 +2,7 @@ discard """ file: "tcurrncy.nim" output: "25" """ -template Additive(typ: typeDesc): stmt = +template Additive(typ: untyped) = proc `+` *(x, y: typ): typ {.borrow.} proc `-` *(x, y: typ): typ {.borrow.} @@ -10,18 +10,18 @@ template Additive(typ: typeDesc): stmt = proc `+` *(x: typ): typ {.borrow.} proc `-` *(x: typ): typ {.borrow.} -template Multiplicative(typ, base: typeDesc): stmt {.immediate.} = +template Multiplicative(typ, base: untyped) = proc `*` *(x: typ, y: base): typ {.borrow.} proc `*` *(x: base, y: typ): typ {.borrow.} proc `div` *(x: typ, y: base): typ {.borrow.} proc `mod` *(x: typ, y: base): typ {.borrow.} -template Comparable(typ: typeDesc): stmt = +template Comparable(typ: untyped) = proc `<` * (x, y: typ): bool {.borrow.} proc `<=` * (x, y: typ): bool {.borrow.} proc `==` * (x, y: typ): bool {.borrow.} -template DefineCurrency(typ, base: expr): stmt {.immediate.} = +template DefineCurrency(typ, base: untyped) = type typ* = distinct base Additive(typ) From da8f6e16cc2107db029a240e5c4d3f02ba707ba8 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 15:19:32 +0200 Subject: [PATCH 035/292] fixes #4491 --- compiler/semcall.nim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler/semcall.nim b/compiler/semcall.nim index 19c3f0bf9..b3fc020b1 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -446,4 +446,7 @@ proc searchForBorrowProc(c: PContext, startScope: PScope, fn: PSym): PSym = result = resolved.sons[0].sym if not compareTypes(result.typ.sons[0], fn.typ.sons[0], dcEqIgnoreDistinct): result = nil + elif result.magic in {mArrPut, mArrGet}: + # cannot borrow these magics for now + result = nil From afb0d2e145a86964dfe23c19c4005874a0e16652 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 15:39:21 +0200 Subject: [PATCH 036/292] partial fix for #4623 --- compiler/semtypes.nim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 9d00c06ca..3834d0b51 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -110,6 +110,8 @@ proc semContainer(c: PContext, n: PNode, kind: TTypeKind, kindStr: string, result = newOrPrevType(kind, prev, c) if sonsLen(n) == 2: var base = semTypeNode(c, n.sons[1], nil) + if base.kind == tyVoid: + localError(n.info, errTIsNotAConcreteType, typeToString(base)) addSonSkipIntLit(result, base) else: localError(n.info, errXExpectsOneTypeParam, kindStr) From 976e95e17ca741dbae5ff33852e725104771ac4c Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 15:49:03 +0200 Subject: [PATCH 037/292] fixes #4580 --- compiler/msgs.nim | 4 ++-- compiler/semstmts.nim | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/msgs.nim b/compiler/msgs.nim index a926f0f49..c10c26ec5 100644 --- a/compiler/msgs.nim +++ b/compiler/msgs.nim @@ -65,7 +65,7 @@ type errPureTypeMismatch, errTypeMismatch, errButExpected, errButExpectedX, errAmbiguousCallXYZ, errWrongNumberOfArguments, errXCannotBePassedToProcVar, - errXCannotBeInParamDecl, errPragmaOnlyInHeaderOfProc, errImplOfXNotAllowed, + errXCannotBeInParamDecl, errPragmaOnlyInHeaderOfProcX, errImplOfXNotAllowed, errImplOfXexpected, errNoSymbolToBorrowFromFound, errDiscardValueX, errInvalidDiscard, errIllegalConvFromXtoY, errCannotBindXTwice, errInvalidOrderInArrayConstructor, @@ -274,7 +274,7 @@ const errWrongNumberOfArguments: "wrong number of arguments", errXCannotBePassedToProcVar: "\'$1\' cannot be passed to a procvar", errXCannotBeInParamDecl: "$1 cannot be declared in parameter declaration", - errPragmaOnlyInHeaderOfProc: "pragmas are only allowed in the header of a proc", + errPragmaOnlyInHeaderOfProcX: "pragmas are only allowed in the header of a proc; redefinition of $1", errImplOfXNotAllowed: "implementation of \'$1\' is not allowed", errImplOfXexpected: "implementation of \'$1\' expected", errNoSymbolToBorrowFromFound: "no symbol to borrow from found", diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index f1f863924..cd96600ec 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -1227,7 +1227,8 @@ proc semProcAux(c: PContext, n: PNode, kind: TSymKind, implicitPragmas(c, s, n, validPragmas) else: if n.sons[pragmasPos].kind != nkEmpty: - localError(n.sons[pragmasPos].info, errPragmaOnlyInHeaderOfProc) + localError(n.sons[pragmasPos].info, errPragmaOnlyInHeaderOfProcX, + "'" & proto.name.s & "' from " & $proto.info) if sfForward notin proto.flags: wrongRedefinition(n.info, proto.name.s) excl(proto.flags, sfForward) From 2b0e9aa16701e83c1f54f029cf44f5717740dbfa Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 16:48:42 +0200 Subject: [PATCH 038/292] fixes regression --- compiler/vmgen.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 3fc3f7556..6bfc33f00 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -748,7 +748,7 @@ proc genConv(c: PCtx; n, arg: PNode; dest: var TDest; opc=opcConv) = let tmp = c.genx(arg) if dest < 0: dest = c.getTemp(n.typ) c.gABC(n, opc, dest, tmp) - c.gABx(n, opc, 0, genType(c, n.typ)) + c.gABx(n, opc, 0, genType(c, n.typ.skipTypes({tyStatic}))) c.gABx(n, opc, 0, genType(c, arg.typ.skipTypes({tyStatic}))) c.freeTemp(tmp) From b4d7ab3caab6b4e1b00d29071ebee7f0372f3512 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 17:29:56 +0200 Subject: [PATCH 039/292] fixes #4179; disallow assignments to openarrays --- compiler/semexprs.nim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 16dc159bd..274bb15b9 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -1400,8 +1400,9 @@ proc semAsgn(c: PContext, n: PNode; mode=asgnNormal): PNode = # a = b # both are vars, means: a[] = b[] # a = b # b no 'var T' means: a = addr(b) var le = a.typ - if skipTypes(le, {tyGenericInst}).kind != tyVar and - isAssignable(c, a) == arNone: + if (skipTypes(le, {tyGenericInst}).kind != tyVar and + isAssignable(c, a) == arNone) or + skipTypes(le, abstractVar).kind in {tyOpenArray, tyVarargs}: # Direct assignment to a discriminant is allowed! localError(a.info, errXCannotBeAssignedTo, renderTree(a, {renderNoComments})) From ff3cf001a39028601b295160492d90deeeb4b030 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 26 Aug 2016 18:00:12 +0200 Subject: [PATCH 040/292] fixes #4656; ropes.nim checks properly for file equality --- compiler/ropes.nim | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/compiler/ropes.nim b/compiler/ropes.nim index bfae7aaa4..d84b59f78 100644 --- a/compiler/ropes.nim +++ b/compiler/ropes.nim @@ -310,15 +310,19 @@ proc equalsFile*(r: Rope, f: File): bool = buf: array[bufSize, char] bpos = buf.len blen = buf.len + btotal = 0 + rtotal = 0 for s in leaves(r): var spos = 0 let slen = s.len + rtotal += slen while spos < slen: if bpos == blen: # Read more data bpos = 0 blen = readBuffer(f, addr(buf[0]), buf.len) + btotal += blen if blen == 0: # no more data in file result = false return @@ -330,7 +334,8 @@ proc equalsFile*(r: Rope, f: File): bool = spos += n bpos += n - result = readBuffer(f, addr(buf[0]), 1) == 0 # check that we've read all + result = readBuffer(f, addr(buf[0]), 1) == 0 and + btotal == rtotal # check that we've read all proc equalsFile*(r: Rope, filename: string): bool = ## returns true if the contents of the file `f` equal `r`. If `f` does not From 7e643d73788fd0799cc970601bc75592e9610039 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sat, 27 Aug 2016 01:10:21 +0200 Subject: [PATCH 041/292] koch nsis: don't hardcode the path to NSIS --- compiler/installer.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/compiler/installer.ini b/compiler/installer.ini index b802f08f1..4fc03dd1d 100644 --- a/compiler/installer.ini +++ b/compiler/installer.ini @@ -116,7 +116,6 @@ path = r"c:\Program Files (x86)\Inno Setup 5\iscc.exe" flags = "/Q" [NSIS] -path = r"c:\Program Files (x86)\NSIS\makensis.exe" flags = "/V0" [C_Compiler] From 8f86e0f86bdbfb124c76288a498cdabd3ef48c50 Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 27 Aug 2016 19:01:59 +1000 Subject: [PATCH 042/292] Rewrite cyclicTree. Performance improved by approx 50%. --- compiler/trees.nim | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/compiler/trees.nim b/compiler/trees.nim index fdd88c348..dde7b5367 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -12,29 +12,19 @@ import ast, astalgo, lexer, msgs, strutils, wordrecg -proc hasSon(father, son: PNode): bool = - for i in countup(0, sonsLen(father) - 1): - if father.sons[i] == son: - return true - result = false - -proc cyclicTreeAux(n, s: PNode): bool = - if n == nil: - return false - if hasSon(s, n): - return true - var m = sonsLen(s) - addSon(s, n) +proc cyclicTreeAux(n: PNode, visited: var seq[PNode]): bool = + if n == nil: return + for v in visited: + if v == n: return true if not (n.kind in {nkEmpty..nkNilLit}): - for i in countup(0, sonsLen(n) - 1): - if cyclicTreeAux(n.sons[i], s): - return true - result = false - delSon(s, m) + visited.add(n) + for nSon in n.sons: + if cyclicTreeAux(nSon, visited): return true + discard visited.pop() proc cyclicTree*(n: PNode): bool = - var s = newNodeI(nkEmpty, n.info) - result = cyclicTreeAux(n, s) + var visited: seq[PNode] = @[] + cyclicTreeAux(n, visited) proc exprStructuralEquivalent*(a, b: PNode; strictSymEquality=false): bool = result = false From 701109e8c193db12a4fd320b214badfa08383fdd Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 27 Aug 2016 19:05:26 +1000 Subject: [PATCH 043/292] Remove (unused) swapOperands proc. --- compiler/trees.nim | 5 ----- 1 file changed, 5 deletions(-) diff --git a/compiler/trees.nim b/compiler/trees.nim index dde7b5367..15e0259d6 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -135,11 +135,6 @@ proc flattenTree*(root: PNode, op: TMagic): PNode = addSon(result, copyNode(root.sons[0])) flattenTreeAux(result, root, op) -proc swapOperands*(op: PNode) = - var tmp = op.sons[1] - op.sons[1] = op.sons[2] - op.sons[2] = tmp - proc isRange*(n: PNode): bool {.inline.} = if n.kind in nkCallKinds: if n[0].kind == nkIdent and n[0].ident.id == ord(wDotDot) or From 5e0a062a9094c447cf9d102de92f1154eb6bc755 Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 27 Aug 2016 19:38:23 +1000 Subject: [PATCH 044/292] Remove (unused) flattenTree proc. --- compiler/trees.nim | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/compiler/trees.nim b/compiler/trees.nim index 15e0259d6..832b206d9 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -121,20 +121,6 @@ proc isDeepConstExpr*(n: PNode): bool = result = true else: discard -proc flattenTreeAux(d, a: PNode, op: TMagic) = - if (getMagic(a) == op): # a is a "leaf", so add it: - for i in countup(1, sonsLen(a) - 1): # BUGFIX - flattenTreeAux(d, a.sons[i], op) - else: - addSon(d, copyTree(a)) - -proc flattenTree*(root: PNode, op: TMagic): PNode = - result = copyNode(root) - if getMagic(root) == op: - # BUGFIX: forget to copy prc - addSon(result, copyNode(root.sons[0])) - flattenTreeAux(result, root, op) - proc isRange*(n: PNode): bool {.inline.} = if n.kind in nkCallKinds: if n[0].kind == nkIdent and n[0].ident.id == ord(wDotDot) or From e1a5732838e89a131787c25e2fc89a5097ef65a0 Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 27 Aug 2016 19:40:48 +1000 Subject: [PATCH 045/292] Remove unused procs getProcSym, getOpSym. --- compiler/trees.nim | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/compiler/trees.nim b/compiler/trees.nim index 832b206d9..ece102c13 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -74,17 +74,6 @@ proc sameTree*(a, b: PNode): bool = if not sameTree(a.sons[i], b.sons[i]): return result = true -proc getProcSym*(call: PNode): PSym = - result = call.sons[0].sym - -proc getOpSym*(op: PNode): PSym = - if op.kind notin {nkCall, nkHiddenCallConv, nkCommand, nkCallStrLit}: - result = nil - else: - if sonsLen(op) <= 0: internalError(op.info, "getOpSym") - elif op.sons[0].kind == nkSym: result = op.sons[0].sym - else: result = nil - proc getMagic*(op: PNode): TMagic = case op.kind of nkCallKinds: From ef0d1561d4f1020ef1f5b94f5cc62c0709638add Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 27 Aug 2016 19:59:40 +1000 Subject: [PATCH 046/292] Remove useless/misleading comment. flattenStmts not only for patterns. --- compiler/trees.nim | 1 - 1 file changed, 1 deletion(-) diff --git a/compiler/trees.nim b/compiler/trees.nim index ece102c13..c32782a50 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -128,7 +128,6 @@ proc unnestStmts(n, result: PNode) = result.add(n) proc flattenStmts*(n: PNode): PNode = - ## flattens a nested statement list; used for pattern matching result = newNodeI(nkStmtList, n.info) unnestStmts(n, result) if result.len == 1: From c23a3e1f840285c8e76f0cad379fc52ac59188f9 Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 27 Aug 2016 20:07:10 +1000 Subject: [PATCH 047/292] Remove unnecessary result initialisations. --- compiler/trees.nim | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/compiler/trees.nim b/compiler/trees.nim index c32782a50..f2d417f72 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -27,7 +27,6 @@ proc cyclicTree*(n: PNode): bool = cyclicTreeAux(n, visited) proc exprStructuralEquivalent*(a, b: PNode; strictSymEquality=false): bool = - result = false if a == b: result = true elif (a != nil) and (b != nil) and (a.kind == b.kind): @@ -51,7 +50,6 @@ proc exprStructuralEquivalent*(a, b: PNode; strictSymEquality=false): bool = result = true proc sameTree*(a, b: PNode): bool = - result = false if a == b: result = true elif a != nil and b != nil and a.kind == b.kind: @@ -83,6 +81,7 @@ proc getMagic*(op: PNode): TMagic = else: result = mNone proc isConstExpr*(n: PNode): bool = + const constKinds = {nkCharLit..nkInt64Lit, nkStrLit..nkTripleStrLit, nkFloatLit..nkFloat64Lit, nkNilLit} result = (n.kind in {nkCharLit..nkInt64Lit, nkStrLit..nkTripleStrLit, nkFloatLit..nkFloat64Lit, nkNilLit}) or (nfAllConst in n.flags) From defc7bbded2b38a45c0602f97e44fe702f8c5f0b Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 27 Aug 2016 21:09:05 +1000 Subject: [PATCH 048/292] Cleanup and fix isConstExpr to return true for all atomic node types. --- compiler/trees.nim | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/compiler/trees.nim b/compiler/trees.nim index f2d417f72..a629b3834 100644 --- a/compiler/trees.nim +++ b/compiler/trees.nim @@ -81,10 +81,8 @@ proc getMagic*(op: PNode): TMagic = else: result = mNone proc isConstExpr*(n: PNode): bool = - const constKinds = {nkCharLit..nkInt64Lit, nkStrLit..nkTripleStrLit, nkFloatLit..nkFloat64Lit, nkNilLit} - result = (n.kind in - {nkCharLit..nkInt64Lit, nkStrLit..nkTripleStrLit, - nkFloatLit..nkFloat64Lit, nkNilLit}) or (nfAllConst in n.flags) + const atomKinds = {nkCharLit..nkNilLit} # Char, Int, UInt, Str, Float and Nil literals + n.kind in atomKinds or nfAllConst in n.flags proc isCaseObj*(n: PNode): bool = if n.kind == nkRecCase: return true From 7630cd076bbdb9c3b1b851ffc6dc6a8ada07f4a6 Mon Sep 17 00:00:00 2001 From: Araq Date: Sat, 27 Aug 2016 13:26:16 +0200 Subject: [PATCH 049/292] updated test case --- tests/rodfiles/amethods.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/rodfiles/amethods.nim b/tests/rodfiles/amethods.nim index ecd36d491..29cf757f7 100644 --- a/tests/rodfiles/amethods.nim +++ b/tests/rodfiles/amethods.nim @@ -1,11 +1,11 @@ type - TBaseClass* = object of TObject + TBaseClass* = object of RootObj proc newBaseClass*: ref TBaseClass = new result -method echoType*(x: ref TBaseClass) = +method echoType*(x: ref TBaseClass) {.base.} = echo "base class" proc echoAlias*(x: ref TBaseClass) = From 68e30d7d52d84578fbe0f6f1c2041b150251e800 Mon Sep 17 00:00:00 2001 From: Araq Date: Sat, 27 Aug 2016 13:38:39 +0200 Subject: [PATCH 050/292] tester cleanup; enable some rod tests --- compiler/cgmeth.nim | 5 +++-- compiler/importer.nim | 2 +- compiler/nversion.nim | 2 +- compiler/rodwrite.nim | 15 +++++++++------ tests/testament/backend.nim | 1 + tests/testament/categories.nim | 31 ++++++++++++++++--------------- 6 files changed, 31 insertions(+), 25 deletions(-) diff --git a/compiler/cgmeth.nim b/compiler/cgmeth.nim index 624c5b183..bcf0b535b 100644 --- a/compiler/cgmeth.nim +++ b/compiler/cgmeth.nim @@ -145,15 +145,16 @@ proc fixupDispatcher(meth, disp: PSym) = disp.typ.lockLevel = meth.typ.lockLevel proc methodDef*(s: PSym, fromCache: bool) = - var L = len(gMethods) + let L = len(gMethods) var witness: PSym for i in countup(0, L - 1): - var disp = gMethods[i].dispatcher + let disp = gMethods[i].dispatcher case sameMethodBucket(disp, s) of Yes: add(gMethods[i].methods, s) attachDispatcher(s, lastSon(disp.ast)) fixupDispatcher(s, disp) + #echo "fixup ", disp.name.s, " ", disp.id when useEffectSystem: checkMethodEffects(disp, s) if sfBase in s.flags and gMethods[i].methods[0] != s: # already exists due to forwarding definition? diff --git a/compiler/importer.nim b/compiler/importer.nim index dd2c4d954..7e7130b85 100644 --- a/compiler/importer.nim +++ b/compiler/importer.nim @@ -163,7 +163,7 @@ proc myImportModule(c: PContext, n: PNode): PSym = var f = checkModuleName(n) if f != InvalidFileIDX: result = importModuleAs(n, gImportModule(c.module, f)) - if result.info.fileIndex == n.info.fileIndex: + if result.info.fileIndex == c.module.info.fileIndex: localError(n.info, errGenerated, "A module cannot import itself") if sfDeprecated in result.flags: message(n.info, warnDeprecated, result.name.s) diff --git a/compiler/nversion.nim b/compiler/nversion.nim index 55e337969..d69e1e553 100644 --- a/compiler/nversion.nim +++ b/compiler/nversion.nim @@ -13,5 +13,5 @@ const MaxSetElements* = 1 shl 16 # (2^16) to support unicode character sets? VersionAsString* = system.NimVersion - RodFileVersion* = "1218" # modify this if the rod-format changes! + RodFileVersion* = "1221" # modify this if the rod-format changes! diff --git a/compiler/rodwrite.nim b/compiler/rodwrite.nim index 557b1dabf..addbdade6 100644 --- a/compiler/rodwrite.nim +++ b/compiler/rodwrite.nim @@ -74,7 +74,7 @@ proc newRodWriter(hash: SecureHash, module: PSym): PRodWriter = result.converters = "" result.methods = "" result.init = "" - result.origFile = module.info.toFilename + result.origFile = module.info.toFullPath result.data = newStringOfCap(12_000) proc addModDep(w: PRodWriter, dep: string; info: TLineInfo) = @@ -100,6 +100,10 @@ proc pushType(w: PRodWriter, t: PType) = proc pushSym(w: PRodWriter, s: PSym) = # check so that the stack does not grow too large: if iiTableGet(w.index.tab, s.id) == InvalidKey: + when false: + if s.kind == skMethod: + echo "encoding ", s.id, " ", s.name.s + writeStackTrace() w.sstack.add(s) proc encodeNode(w: PRodWriter, fInfo: TLineInfo, n: PNode, @@ -119,7 +123,7 @@ proc encodeNode(w: PRodWriter, fInfo: TLineInfo, n: PNode, result.add(',') encodeVInt(n.info.line, result) result.add(',') - encodeVInt(fileIdx(w, toFilename(n.info)), result) + encodeVInt(fileIdx(w, toFullPath(n.info)), result) elif fInfo.line != n.info.line: result.add('?') encodeVInt(n.info.col, result) @@ -224,8 +228,7 @@ proc encodeType(w: PRodWriter, t: PType, result: var string) = if t.lockLevel.ord != UnspecifiedLockLevel.ord: add(result, '\14') encodeVInt(t.lockLevel.int16, result) - - if t.destructor != nil: + if t.destructor != nil and t.destructor.id != 0: add(result, '\15') encodeVInt(t.destructor.id, result) pushSym(w, t.destructor) @@ -293,7 +296,7 @@ proc encodeSym(w: PRodWriter, s: PSym, result: var string) = result.add(',') if s.info.line != -1'i16: encodeVInt(s.info.line, result) result.add(',') - encodeVInt(fileIdx(w, toFilename(s.info)), result) + encodeVInt(fileIdx(w, toFullPath(s.info)), result) if s.owner != nil: result.add('*') encodeVInt(s.owner.id, result) @@ -607,7 +610,7 @@ proc process(c: PPassContext, n: PNode): PNode = for i in countup(0, sonsLen(n) - 1): addModDep(w, getModuleName(n.sons[i]), n.info) addStmt(w, n) - of nkFromStmt: + of nkFromStmt, nkImportExceptStmt: addModDep(w, getModuleName(n.sons[0]), n.info) addStmt(w, n) of nkIncludeStmt: diff --git a/tests/testament/backend.nim b/tests/testament/backend.nim index 671b5c8b7..8f0961566 100644 --- a/tests/testament/backend.nim +++ b/tests/testament/backend.nim @@ -59,6 +59,7 @@ var thisMachine: MachineId thisCommit: CommitId +{.experimental.} proc `()`(cmd: string{lit}): string = cmd.execProcess.string.strip proc getMachine*(db: DbConn): MachineId = diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index eebf18f54..9b71cbf5f 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -24,7 +24,7 @@ proc delNimCache() = echo "[Warning] could not delete: ", nimcacheDir proc runRodFiles(r: var TResults, cat: Category, options: string) = - template test(filename: expr): stmt = + template test(filename: untyped) = testSpec r, makeTest(rodfilesDir / filename, options, cat, actionRun) delNimCache() @@ -46,18 +46,19 @@ proc runRodFiles(r: var TResults, cat: Category, options: string) = test "deada2" delNimCache() - # test method generation: - test "bmethods" - test "bmethods2" - delNimCache() + when false: + # test method generation: + test "bmethods" + test "bmethods2" + delNimCache() - # test generics: - test "tgeneric1" - test "tgeneric2" - delNimCache() + # test generics: + test "tgeneric1" + test "tgeneric2" + delNimCache() proc compileRodFiles(r: var TResults, cat: Category, options: string) = - template test(filename: expr): stmt = + template test(filename: untyped) = testSpec r, makeTest(rodfilesDir / filename, options, cat) delNimCache() @@ -114,20 +115,20 @@ proc dllTests(r: var TResults, cat: Category, options: string) = # ------------------------------ GC tests ------------------------------------- proc gcTests(r: var TResults, cat: Category, options: string) = - template testWithoutMs(filename: expr): stmt = + template testWithoutMs(filename: untyped) = testSpec r, makeTest("tests/gc" / filename, options, cat, actionRun) testSpec r, makeTest("tests/gc" / filename, options & " -d:release", cat, actionRun) testSpec r, makeTest("tests/gc" / filename, options & " -d:release -d:useRealtimeGC", cat, actionRun) - template testWithoutBoehm(filename: expr): stmt = + template testWithoutBoehm(filename: untyped) = testWithoutMs filename testSpec r, makeTest("tests/gc" / filename, options & " --gc:markAndSweep", cat, actionRun) testSpec r, makeTest("tests/gc" / filename, options & " -d:release --gc:markAndSweep", cat, actionRun) - template test(filename: expr): stmt = + template test(filename: untyped) = testWithoutBoehm filename when not defined(windows): # AR: cannot find any boehm.dll on the net, right now, so disabled @@ -173,7 +174,7 @@ proc longGCTests(r: var TResults, cat: Category, options: string) = # ------------------------- threading tests ----------------------------------- proc threadTests(r: var TResults, cat: Category, options: string) = - template test(filename: expr): stmt = + template test(filename: untyped) = testSpec r, makeTest("tests/threads" / filename, options, cat, actionRun) testSpec r, makeTest("tests/threads" / filename, options & " -d:release", cat, actionRun) @@ -209,7 +210,7 @@ proc debuggerTests(r: var TResults, cat: Category, options: string) = # ------------------------- JS tests ------------------------------------------ proc jsTests(r: var TResults, cat: Category, options: string) = - template test(filename: expr): stmt = + template test(filename: untyped) = testSpec r, makeTest(filename, options & " -d:nodejs", cat, actionRun, targetJS) testSpec r, makeTest(filename, options & " -d:nodejs -d:release", cat, From 90b0a771e405eab9bc48e83ca7e4f47d3203d088 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 14:11:41 +0300 Subject: [PATCH 051/292] Uncaught exceptions in JS now always propagate with better stack trace. --- lib/system/jssys.nim | 66 +++++++++++++++++------------- web/news/version_0_15_released.rst | 3 ++ 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index 9c8a18bfe..0fbf4944a 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -7,11 +7,6 @@ # distribution, for details about the copyright. # -when defined(nodejs): - proc alert*(s: cstring) {.importc: "console.log", nodecl.} -else: - proc alert*(s: cstring) {.importc, nodecl.} - proc log*(s: cstring) {.importc: "console.log", varargs, nodecl.} type @@ -101,26 +96,32 @@ proc getStackTrace*(): string = rawWriteStackTrace() proc unhandledException(e: ref Exception) {. compilerproc, asmNoStackFrame.} = - when NimStackTrace: - var buf = rawWriteStackTrace() + var buf = "" + if e.msg != nil and e.msg[0] != '\0': + add(buf, "Error: unhandled exception: ") + add(buf, e.msg) else: - var buf = "" - if e.msg != nil and e.msg[0] != '\0': - add(buf, "Error: unhandled exception: ") - add(buf, e.msg) - else: - add(buf, "Error: unhandled exception") - add(buf, " [") - add(buf, e.name) - add(buf, "]\n") - alert(buf) + add(buf, "Error: unhandled exception") + add(buf, " [") + add(buf, e.name) + add(buf, "]\n") + when NimStackTrace: + add(buf, rawWriteStackTrace()) + let cbuf : cstring = buf + {.emit: """ + if (typeof(Error) !== "undefined") { + throw new Error(`cbuf`); + } + else { + throw `cbuf`; + } + """.} proc raiseException(e: ref Exception, ename: cstring) {. compilerproc, asmNoStackFrame.} = e.name = ename - when not defined(noUnhandledHandler): - if excHandler == 0: - unhandledException(e) + if excHandler == 0: + unhandledException(e) when defined(nimphp): asm """throw new Exception($`e`["message"]);""" else: @@ -130,15 +131,15 @@ proc reraiseException() {.compilerproc, asmNoStackFrame.} = if lastJSError == nil: raise newException(ReraiseError, "no exception to reraise") else: - when not defined(noUnhandledHandler): - if excHandler == 0: - var isNimException: bool - when defined(nimphp): - asm "`isNimException` = isset(`lastJSError`['m_type']);" - else: - asm "`isNimException` = lastJSError.m_type;" - if isNimException: - unhandledException(cast[ref Exception](lastJSError)) + if excHandler == 0: + var isNimException: bool + when defined(nimphp): + asm "`isNimException` = isset(`lastJSError`['m_type']);" + else: + asm "`isNimException` = lastJSError.m_type;" + if isNimException: + unhandledException(cast[ref Exception](lastJSError)) + asm "throw lastJSError;" proc raiseOverflow {.exportc: "raiseOverflow", noreturn.} = @@ -873,3 +874,10 @@ proc nimParseBiggestFloat(s: string, number: var BiggestFloat, start = 0): int { # evaluate sign number = number * sign result = i - start + +when defined(nodejs): + # Deprecated. Use `alert` defined in dom.nim + proc alert*(s: cstring) {.importc: "console.log", nodecl, deprecated.} +else: + # Deprecated. Use `alert` defined in dom.nim + proc alert*(s: cstring) {.importc, nodecl, deprecated.} diff --git a/web/news/version_0_15_released.rst b/web/news/version_0_15_released.rst index 2b1b216b8..bdbd79a2b 100644 --- a/web/news/version_0_15_released.rst +++ b/web/news/version_0_15_released.rst @@ -57,6 +57,9 @@ that have tuple name: - Now when you compile console application for Windows, console output encoding is automatically set to UTF-8. +- Unhandled exceptions in JavaScript are now thrown regardless ``noUnhandledHandler`` + is defined. But now they do their best to provide a readable stack trace. + Library Additions ----------------- From 8bff930c7c0bfa02e4d942faec1e7532d85f0cba Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 15:08:03 +0300 Subject: [PATCH 052/292] Fixed js codegen issue for uncaught exceptions. --- compiler/jsgen.nim | 3 ++- tests/exception/tunhandledexc.nim | 5 ++--- tests/testament/categories.nim | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 80bcd2b0e..335ee2b92 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -560,6 +560,7 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = # ++excHandler; # try { # stmts; + # --excHandler; # } catch (EXC) { # var prevJSError = lastJSError; lastJSError = EXC; # --excHandler; @@ -595,7 +596,7 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = var generalCatchBranchExists = false let dollar = rope(if p.target == targetJS: "" else: "$") if p.target == targetJS and catchBranchesExist: - addf(p.body, "} catch (EXC) {$n var prevJSError = lastJSError;$n" & + addf(p.body, "--excHandler;$n} catch (EXC) {$n var prevJSError = lastJSError;$n" & " lastJSError = EXC;$n --excHandler;$n", []) elif p.target == targetPHP: addf(p.body, "} catch (Exception $$EXC) {$n $$prevJSError = $$lastJSError;$n $$lastJSError = $$EXC;$n", []) diff --git a/tests/exception/tunhandledexc.nim b/tests/exception/tunhandledexc.nim index 63a402414..c318aec81 100644 --- a/tests/exception/tunhandledexc.nim +++ b/tests/exception/tunhandledexc.nim @@ -14,10 +14,9 @@ proc genErrors(s: string) = raise newException(EsomeotherErr, "bla") when true: + try: discard except: discard + try: genErrors("errssor!") except ESomething: echo("Error happened") - - - diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index e534cc161..8d8d0bcec 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -220,6 +220,7 @@ proc jsTests(r: var TResults, cat: Category, options: string) = for testfile in ["exception/texceptions", "exception/texcpt1", "exception/texcsub", "exception/tfinally", "exception/tfinally2", "exception/tfinally3", + "exception/tunhandledexc", "actiontable/tactiontable", "method/tmultim1", "method/tmultim3", "method/tmultim4", "varres/tvarres0", "varres/tvarres3", "varres/tvarres4", From 62785be5a5e1ea9b74e40fcaed85ead09c7535d4 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 18:09:24 +0300 Subject: [PATCH 053/292] Restore framePtr after exceptions --- compiler/jsgen.nim | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 335ee2b92..357dd25ed 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -558,11 +558,13 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = # code to generate: # # ++excHandler; + # var tmpFramePtr = framePtr; # try { # stmts; # --excHandler; # } catch (EXC) { # var prevJSError = lastJSError; lastJSError = EXC; + # framePtr = tmpFramePtr; # --excHandler; # if (e.typ && e.typ == NTI433 || e.typ == NTI2321) { # stmts; @@ -573,6 +575,7 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = # } # lastJSError = prevJSError; # } finally { + # framePtr = tmpFramePtr; # stmts; # } genLineDir(p, n) @@ -585,8 +588,10 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = var catchBranchesExist = length > 1 and n.sons[i].kind == nkExceptBranch if catchBranchesExist and p.target == targetJS: add(p.body, "++excHandler;" & tnl) - var safePoint = "Tmp$1" % [rope(p.unique)] - if optStackTrace in p.options: add(p.body, "framePtr = F;" & tnl) + var tmpFramePtr = rope"F" + if optStackTrace notin p.options: + tmpFramePtr = p.getTemp(true) + add(p.body, tmpFramePtr & " = framePtr;" & tnl) addf(p.body, "try {$n", []) if p.target == targetPHP and p.globals == nil: p.globals = "global $lastJSError; global $prevJSError;".rope @@ -598,6 +603,7 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = if p.target == targetJS and catchBranchesExist: addf(p.body, "--excHandler;$n} catch (EXC) {$n var prevJSError = lastJSError;$n" & " lastJSError = EXC;$n --excHandler;$n", []) + add(p.body, "framePtr = $1;$n" % [tmpFramePtr]) elif p.target == targetPHP: addf(p.body, "} catch (Exception $$EXC) {$n $$prevJSError = $$lastJSError;$n $$lastJSError = $$EXC;$n", []) while i < length and n.sons[i].kind == nkExceptBranch: @@ -619,8 +625,7 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = addf(orExpr, "isObj($2lastJSError.m_type, $1)", [genTypeInfo(p, n.sons[i].sons[j].typ), dollar]) if i > 1: add(p.body, "else ") - addf(p.body, "if ($3lastJSError && ($2)) {$n", - [safePoint, orExpr, dollar]) + addf(p.body, "if ($1lastJSError && ($2)) {$n", [dollar, orExpr]) gen(p, n.sons[i].sons[blen - 1], a) moveInto(p, a, r) addf(p.body, "}$n", []) @@ -632,6 +637,7 @@ proc genTry(p: PProc, n: PNode, r: var TCompRes) = addf(p.body, "$1lastJSError = $1prevJSError;$n", [dollar]) if p.target == targetJS: add(p.body, "} finally {" & tnl) + add(p.body, "framePtr = $1;$n" % [tmpFramePtr]) if p.target == targetPHP: # XXX ugly hack for PHP codegen add(p.body, "}" & tnl) From c1dd65c01a7c94764d8a4c255541136b95e643b7 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 18:10:13 +0300 Subject: [PATCH 054/292] Reset framePtr on unhabdled exception. Dont reset on getStackTrace. --- lib/system/jssys.nim | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index 0fbf4944a..abec44bbb 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -86,9 +86,6 @@ proc auxWriteStackTrace(f: PCallFrame): string = proc rawWriteStackTrace(): string = if framePtr != nil: result = "Traceback (most recent call last)\n" & auxWriteStackTrace(framePtr) - framePtr = nil - elif lastJSError != nil: - result = $lastJSError.stack else: result = "No stack traceback available\n" @@ -108,6 +105,7 @@ proc unhandledException(e: ref Exception) {. when NimStackTrace: add(buf, rawWriteStackTrace()) let cbuf : cstring = buf + framePtr = nil {.emit: """ if (typeof(Error) !== "undefined") { throw new Error(`cbuf`); From dddae2ddcc396ab6163eb7a6c70cc3d8b36cd3b3 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 19:34:31 +0300 Subject: [PATCH 055/292] Fixed frame corruption --- lib/pure/json.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pure/json.nim b/lib/pure/json.nim index c76bbc3b5..7ad7efd23 100644 --- a/lib/pure/json.nim +++ b/lib/pure/json.nim @@ -1201,19 +1201,19 @@ else: proc len(x: JSObject): int = assert x.getVarType == JArray asm """ - return `x`.length; + `result` = `x`.length; """ proc `[]`(x: JSObject, y: string): JSObject = assert x.getVarType == JObject asm """ - return `x`[`y`]; + `result` = `x`[`y`]; """ proc `[]`(x: JSObject, y: int): JSObject = assert x.getVarType == JArray asm """ - return `x`[`y`]; + `result` = `x`[`y`]; """ proc convertObject(x: JSObject): JsonNode = From e39138fe422b256c1bb08235ec2331f58c1449b6 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 19:33:34 +0300 Subject: [PATCH 056/292] Fixed codegen for asmNoStackFrame pragma. More bulletproof frame restoration. --- compiler/jsgen.nim | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 357dd25ed..3e56e2f41 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -512,6 +512,10 @@ proc arith(p: PProc, n: PNode, r: var TCompRes, op: TMagic) = arithAux(p, n, r, op, jsOps) r.kind = resExpr +proc hasFrameInfo(p: PProc): bool = + ({optLineTrace, optStackTrace} * p.options == {optLineTrace, optStackTrace}) and + ((p.prc == nil) or not (sfPure in p.prc.flags)) + proc genLineDir(p: PProc, n: PNode) = let line = toLinenumber(n.info) if optLineDir in p.options: @@ -521,9 +525,7 @@ proc genLineDir(p: PProc, n: PNode) = ((p.prc == nil) or sfPure notin p.prc.flags): useMagic(p, "endb") addf(p.body, "endb($1);$n", [rope(line)]) - elif ({optLineTrace, optStackTrace} * p.options == - {optLineTrace, optStackTrace}) and - ((p.prc == nil) or not (sfPure in p.prc.flags)): + elif hasFrameInfo(p): addf(p.body, "F.line = $1;$n" | "$$F['line'] = $1;$n", [rope(line)]) proc genWhileStmt(p: PProc, n: PNode) = @@ -1925,10 +1927,10 @@ proc frameCreate(p: PProc; procname, filename: Rope): Rope = procname, filename] proc frameDestroy(p: PProc): Rope = - result = rope(("framePtr = framePtr.prev;" | "$framePtr = $framePtr['prev'];") & tnl) + result = rope(("framePtr = F.prev;" | "$framePtr = $F['prev'];") & tnl) proc genProcBody(p: PProc, prc: PSym): Rope = - if optStackTrace in prc.options: + if hasFrameInfo(p): result = frameCreate(p, makeJSString(prc.owner.name.s & '.' & prc.name.s), makeJSString(toFilename(prc.info))) @@ -1942,7 +1944,7 @@ proc genProcBody(p: PProc, prc: PSym): Rope = if prc.typ.callConv == ccSysCall and p.target == targetJS: result = ("try {$n$1} catch (e) {$n" & " alert(\"Unhandled exception:\\n\" + e.message + \"\\n\"$n}") % [result] - if optStackTrace in prc.options: + if hasFrameInfo(p): add(result, frameDestroy(p)) proc genProc(oldProc: PProc, prc: PSym): Rope = From cafcf1308a608ce35aa3a7abba8a28534e2b75e1 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 20:25:36 +0300 Subject: [PATCH 057/292] Treat all failure codes from nodejs as 1 --- tests/testament/tester.nim | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/testament/tester.nim b/tests/testament/tester.nim index 83e59a6c1..74ac58927 100644 --- a/tests/testament/tester.nim +++ b/tests/testament/tester.nim @@ -334,6 +334,11 @@ proc testSpec(r: var TResults, test: TTest) = let exeCmd = (if isJsTarget: nodejs & " " else: "") & exeFile var (buf, exitCode) = execCmdEx(exeCmd, options = {poStdErrToStdOut}) + + # Treat all failure codes from nodejs as 1. Older versions of nodejs used + # to return other codes, but for us it is sufficient to know that it's not 0. + if exitCode != 0: exitCode = 1 + let bufB = if expected.sortoutput: makeDeterministic(strip(buf.string)) else: strip(buf.string) let expectedOut = strip(expected.outp) From fc4bced41b174668c5239afda1d5aade45f055bf Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 27 Aug 2016 21:37:02 +0300 Subject: [PATCH 058/292] Added a note about system.alert deprecation --- web/news/version_0_15_released.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web/news/version_0_15_released.rst b/web/news/version_0_15_released.rst index bdbd79a2b..683cbed0d 100644 --- a/web/news/version_0_15_released.rst +++ b/web/news/version_0_15_released.rst @@ -60,6 +60,8 @@ that have tuple name: - Unhandled exceptions in JavaScript are now thrown regardless ``noUnhandledHandler`` is defined. But now they do their best to provide a readable stack trace. +- In JavaScript ``system.alert`` is deprecated. Use ``dom.alert`` instead. + Library Additions ----------------- From 7aa64941e819566d5c41703d5b1400b46759df79 Mon Sep 17 00:00:00 2001 From: Araq Date: Sun, 28 Aug 2016 01:44:54 +0200 Subject: [PATCH 059/292] disable rodfile tests depending on gtk --- tests/testament/categories.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index 9b71cbf5f..820078c54 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -370,7 +370,7 @@ proc `&?.`(a, b: string): string = proc processCategory(r: var TResults, cat: Category, options: string, fileGlob: string = "t*.nim") = case cat.string.normalize of "rodfiles": - compileRodFiles(r, cat, options) + when false: compileRodFiles(r, cat, options) runRodFiles(r, cat, options) of "js": # XXX JS doesn't need to be special anymore From d6074a7c7337991c18877689ff8949c3387321ed Mon Sep 17 00:00:00 2001 From: mogud Date: Sun, 28 Aug 2016 16:09:26 +0800 Subject: [PATCH 060/292] make koch build quietly --- koch.nim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/koch.nim b/koch.nim index eb25a7480..dadbc1f10 100644 --- a/koch.nim +++ b/koch.nim @@ -275,7 +275,7 @@ proc cleanAux(dir: string) = for kind, path in walkDir(dir): case kind of pcFile: - var (dir, name, ext) = splitFile(path) + var (_, name, ext) = splitFile(path) if ext == "" or cleanExt.contains(ext): if not ignore.contains(name): echo "removing: ", path @@ -367,6 +367,7 @@ when defined(withUpdate): # -------------- builds a release --------------------------------------------- +#[ proc run7z(platform: string, patterns: varargs[string]) = const tmpDir = "nim-" & VersionAsString createDir tmpDir @@ -378,6 +379,7 @@ proc run7z(platform: string, patterns: varargs[string]) = exec("7z a -tzip $1-$2.zip $1" % [tmpDir, platform]) finally: removeDir tmpDir +]# proc winRelease() = boot(" -d:release") @@ -396,7 +398,7 @@ proc winRelease() = # -------------- tests -------------------------------------------------------- -template `|`(a, b): expr = (if a.len > 0: a else: b) +template `|`(a, b): string = (if a.len > 0: a else: b) proc tests(args: string) = # we compile the tester with taintMode:on to have a basic From 7e3ebc1bccb689176cfadd485fe8777bc343a5e6 Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Mon, 29 Aug 2016 00:27:38 +0200 Subject: [PATCH 061/292] Adds GitLab CI config. Squashed commit of the following: commit d87230e5a2396530e93e9b20f312e08069c590ad Author: Dominik Picheta Date: Sun Aug 28 22:46:41 2016 +0200 Fix tests on win commit 25c90666fbde6c6c09352fba0cc7ed7ee2ce553c Author: Dominik Picheta Date: Sun Aug 28 22:27:00 2016 +0200 Fix tests. commit b46e00c86005d24fd210f8041031a4d7b6d73e3f Author: Dominik Picheta Date: Sun Aug 28 21:58:12 2016 +0200 Fix deps probs. commit 9c5db9eb9a41d8baab0124c28706ab2afb3c7f5f Author: Dominik Picheta Date: Sun Aug 28 21:14:14 2016 +0200 Fixes yaml sytax commit 292571a81b9b53b15b864aa2f86cb445f4e07307 Author: Dominik Picheta Date: Sun Aug 28 21:13:06 2016 +0200 Separates tests. commit 3cc46c712b86bcab8fc79acf390487fe2061efa1 Author: Dominik Picheta Date: Sun Aug 28 20:31:40 2016 +0200 Fix batch script. commit 6b93be904dd3064e2a651d012acf9978c33a4b43 Author: Dominik Picheta Date: Sun Aug 28 20:22:24 2016 +0200 Windows fixes? commit 76dcda9d698682147025e7af5a563e2844c8ed84 Author: Dominik Picheta Date: Sun Aug 28 20:16:35 2016 +0200 Refactored ci yml file. commit abd49689440e9159e6008f7ef12d3006f53d76fa Author: Dominik Picheta Date: Sun Aug 28 17:17:44 2016 +0200 Add runner info to script. commit 62d7c3fa6a0eb5a074aa8d2c151481973b305d12 Author: Dominik Picheta Date: Sun Aug 28 17:11:29 2016 +0200 Run on all runners. commit d6132fdd7cd48d47f03baa8a2752323160a83f99 Author: Dominik Picheta Date: Sun Aug 28 16:50:35 2016 +0200 Remove tags. commit 19fddf60fbec60586900702c36763c5b090cc88e Author: Dominik Picheta Date: Sun Aug 28 16:39:06 2016 +0200 Added linux/windows. commit f91745e2a35f079ddb71676783ef34504a1d6c43 Author: Dominik Picheta Date: Sun Aug 28 16:24:02 2016 +0200 More changes. commit d5a4cc49adbb6741db3b9af6ccb7011916c2ebd3 Author: Dominik Picheta Date: Sun Aug 28 15:55:21 2016 +0200 More changes. commit 12f59e529324af5c67520b6dd255f0082fa1dc37 Merge: c77244a 7aa6494 Author: Dominik Picheta Date: Sun Aug 28 14:52:41 2016 +0200 Merge branch 'devel' into gitlab-ci commit c77244af513606b1245ebcb44ab68ca3108fd77b Author: Dominik Picheta Date: Sun Aug 28 14:48:25 2016 +0200 More changes. commit 4c56422f980fd16d251112b5d3ce696264b3170b Author: Dominik Picheta Date: Sun Aug 28 14:32:04 2016 +0200 More change. commit f709ea003f1649234a723ba9d8092edbde3ef6a9 Author: Dominik Picheta Date: Sun Aug 28 14:17:58 2016 +0200 Another try at CI. commit ae79bb95bc639856f2637f93fc9a59b178a18b0f Author: Dominik Picheta Date: Sun Aug 28 14:03:58 2016 +0200 Fixes .gitlab-ci.yml commit 9b832dde4abb9e168d1c549e12ed20a8c5185d7b Author: Dominik Picheta Date: Sun Aug 28 14:00:48 2016 +0200 Some changes to .gitlab-ci.yml. commit c113a09b6f1dd1b87c1f34f2ea54364d701033e2 Author: Dominik Picheta Date: Sun Aug 28 13:53:46 2016 +0200 Adds .gitlab-ci.yml. --- .gitlab-ci.yml | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ ci/build.bat | 14 +++++++++ ci/build.sh | 15 +++++++++ ci/deps.bat | 5 +++ ci/deps.sh | 19 ++++++++++++ 5 files changed, 136 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 ci/build.bat create mode 100644 ci/build.sh create mode 100644 ci/deps.bat create mode 100644 ci/deps.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..e814b2af5 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,83 @@ +# use the official gcc image, based on debian +# can use versions as well, like gcc:5.2 +# see https://hub.docker.com/_/gcc/ +image: gcc + +stages: + - pre-build + - build + - test + +.linux_set_path: &linux_set_path_def + before_script: + - export PATH=$(pwd)/bin:$PATH + tags: + - linux + +.windows_set_path: &win_set_path_def + before_script: + - set PATH=%CD%\bin;%PATH% + tags: + - windows + +build-linux: + stage: build + script: + - sh ci/build.sh + artifacts: + paths: + - bin/nim + - bin/nimd + - compiler/nim + - koch + expire_in: 1 week + tags: + - linux + +build-windows: + stage: build + script: + - ci\build.bat + artifacts: + paths: + - bin\nim.exe + - bin\nimd.exe + - compiler\nim.exe + - koch.exe + expire_in: 1 week + tags: + - windows + +test-linux: + stage: test + <<: *linux_set_path_def + script: + - sh ci/deps.sh + - nim c --taintMode:on tests/testament/tester + - tests/testament/tester --pedantic all + tags: + - linux + +test-windows: + stage: test + <<: *win_set_path_def + script: + - call ci\deps.bat + - nim c --taintMode:on tests\testament\tester + - tests\testament\tester.exe --pedantic all + tags: + - windows + +.csources: &csources_definition + stage: test + script: + - nim -v + - ./koch csources + - ./koch xz + artifacts: + paths: + - csources + +csources-linux: + <<: *csources_definition + <<: *linux_set_path_def diff --git a/ci/build.bat b/ci/build.bat new file mode 100644 index 000000000..cdce8d3d2 --- /dev/null +++ b/ci/build.bat @@ -0,0 +1,14 @@ +REM Some debug info +echo "Running on %CI_RUNNER_ID% (%CI_RUNNER_DESCRIPTION%) with tags %CI_RUNNER_TAGS%." +gcc -v + +git clone --depth 1 https://github.com/nim-lang/csources.git +cd csources +call build64.bat +cd .. +set PATH=%CD%\bin;%PATH% +nim -v +nim c koch +koch.exe boot +copy bin/nim bin/nimd +koch.exe boot -d:release diff --git a/ci/build.sh b/ci/build.sh new file mode 100644 index 000000000..a0fee1497 --- /dev/null +++ b/ci/build.sh @@ -0,0 +1,15 @@ +sh ci/deps.sh + +# Build from C sources. +git clone --depth 1 https://github.com/nim-lang/csources.git +cd csources +sh build.sh +cd .. +# Add Nim to the PATH +export PATH=$(pwd)/bin:$PATH +# Bootstrap. +nim -v +nim c koch +./koch boot +cp bin/nim bin/nimd +./koch boot -d:release diff --git a/ci/deps.bat b/ci/deps.bat new file mode 100644 index 000000000..d73a7b5af --- /dev/null +++ b/ci/deps.bat @@ -0,0 +1,5 @@ +# Nimble deps +nim e install_nimble.nims +nim e tests/test_nimscript.nims +nimble update +nimble install -y zip opengl sdl1 jester niminst diff --git a/ci/deps.sh b/ci/deps.sh new file mode 100644 index 000000000..9ca70b6d2 --- /dev/null +++ b/ci/deps.sh @@ -0,0 +1,19 @@ +# Some debug info +echo "Running on $CI_RUNNER_ID ($CI_RUNNER_DESCRIPTION) with tags $CI_RUNNER_TAGS." +gcc -v +# Packages +apt-get update -qq +apt-get install -y -qq libcurl4-openssl-dev libsdl1.2-dev libgc-dev nodejs +# FASM +wget http://nim-lang.org/download/fasm-1.71.39.tgz +tar xvf fasm-1.71.39.tgz +# PATH handling +export PATH=$(pwd)/fasm:$PATH +which fasm +export PATH=$(pwd)/bin:$PATH + +# Nimble deps +nim e install_nimble.nims +nim e tests/test_nimscript.nims +nimble update +nimble install zip opengl sdl1 jester niminst From 154db46db817fff315b1a0ef2da36511e382cfad Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 29 Aug 2016 11:33:41 +0200 Subject: [PATCH 062/292] fixes a regression that caused --import in a config file to break things --- compiler/importer.nim | 5 ++++- tests/import_in_config/nim.cfg | 2 ++ tests/import_in_config/other.nim | 0 tests/import_in_config/tmain.nim | 0 4 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 tests/import_in_config/nim.cfg create mode 100644 tests/import_in_config/other.nim create mode 100644 tests/import_in_config/tmain.nim diff --git a/compiler/importer.nim b/compiler/importer.nim index 7e7130b85..87415733b 100644 --- a/compiler/importer.nim +++ b/compiler/importer.nim @@ -163,7 +163,10 @@ proc myImportModule(c: PContext, n: PNode): PSym = var f = checkModuleName(n) if f != InvalidFileIDX: result = importModuleAs(n, gImportModule(c.module, f)) - if result.info.fileIndex == c.module.info.fileIndex: + # we cannot perform this check reliably because of + # test: modules/import_in_config) + if result.info.fileIndex == c.module.info.fileIndex and + result.info.fileIndex == n.info.fileIndex: localError(n.info, errGenerated, "A module cannot import itself") if sfDeprecated in result.flags: message(n.info, warnDeprecated, result.name.s) diff --git a/tests/import_in_config/nim.cfg b/tests/import_in_config/nim.cfg new file mode 100644 index 000000000..af112d112 --- /dev/null +++ b/tests/import_in_config/nim.cfg @@ -0,0 +1,2 @@ +import = "other" +path = "$projectDir" diff --git a/tests/import_in_config/other.nim b/tests/import_in_config/other.nim new file mode 100644 index 000000000..e69de29bb diff --git a/tests/import_in_config/tmain.nim b/tests/import_in_config/tmain.nim new file mode 100644 index 000000000..e69de29bb From f12f27c185f40576633473ee548636c72f146a90 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Mon, 29 Aug 2016 13:10:06 +0300 Subject: [PATCH 063/292] Fixed getCurrentException and getCurrentExceptionMsg. Closes #4635 --- lib/system/jssys.nim | 32 +++++++++++++++++++++++--------- tests/exception/texceptions.nim | 6 +++--- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index abec44bbb..31d283cd7 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -47,11 +47,30 @@ proc nimCharToStr(x: char): string {.compilerproc.} = result = newString(1) result[0] = x +proc isNimException(): bool {.asmNoStackFrame.} = + when defined(nimphp): + asm "return isset(`lastJSError`['m_type']);" + else: + asm "return `lastJSError`.m_type;" + +proc getCurrentException*(): ref Exception = + if isNimException(): result = cast[ref Exception](lastJSError) + proc getCurrentExceptionMsg*(): string = if lastJSError != nil: - return $lastJSError.message - else: - return "" + if isNimException(): + return cast[Exception](lastJSError).msg + else: + when not defined(nimphp): + var msg: cstring + {.emit: """ + if (`lastJSError`.message !== undefined) { + `msg` = `lastJSError`.message; + } + """.} + if not msg.isNil: + return $msg + return "" proc auxWriteStackTrace(f: PCallFrame): string = type @@ -130,12 +149,7 @@ proc reraiseException() {.compilerproc, asmNoStackFrame.} = raise newException(ReraiseError, "no exception to reraise") else: if excHandler == 0: - var isNimException: bool - when defined(nimphp): - asm "`isNimException` = isset(`lastJSError`['m_type']);" - else: - asm "`isNimException` = lastJSError.m_type;" - if isNimException: + if isNimException(): unhandledException(cast[ref Exception](lastJSError)) asm "throw lastJSError;" diff --git a/tests/exception/texceptions.nim b/tests/exception/texceptions.nim index bdf338599..b30b3874b 100644 --- a/tests/exception/texceptions.nim +++ b/tests/exception/texceptions.nim @@ -9,7 +9,7 @@ FINALLY RECOVER BEFORE -EXCEPT +EXCEPT: IOError: hi FINALLY ''' """ @@ -52,10 +52,10 @@ echo "" proc return_in_except = try: echo "BEFORE" - raise newException(IOError, "") + raise newException(IOError, "hi") except: - echo "EXCEPT" + echo "EXCEPT: ", getCurrentException().name, ": ", getCurrentExceptionMsg() return finally: From e92a7fd50841e91e538bd7c1e5c6efa85b54174c Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 29 Aug 2016 15:45:27 +0200 Subject: [PATCH 064/292] nimsuggest improvements --- compiler/modules.nim | 7 ++----- compiler/passes.nim | 13 ++++--------- compiler/scriptconfig.nim | 2 +- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/compiler/modules.nim b/compiler/modules.nim index aa12325f4..711fb6aa4 100644 --- a/compiler/modules.nim +++ b/compiler/modules.nim @@ -186,14 +186,11 @@ proc compileModule*(fileIdx: int32, flags: TSymFlags): PSym = return else: result.id = getID() - if sfMainModule in flags and gProjectIsStdin: - processModule(result, llStreamOpen(stdin), rd) - else: - processModule(result, nil, rd) + let validFile = processModule(result, if sfMainModule in flags and gProjectIsStdin: llStreamOpen(stdin) else: nil, rd) if optCaasEnabled in gGlobalOptions: gMemCacheData[fileIdx].compiledAt = gLastCmdTime gMemCacheData[fileIdx].needsRecompile = Recompiled - doHash fileIdx + if validFile: doHash fileIdx else: if checkDepMem(fileIdx) == Yes: result = compileModule(fileIdx, flags) diff --git a/compiler/passes.nim b/compiler/passes.nim index ceb3e2b8a..b7642e3e4 100644 --- a/compiler/passes.nim +++ b/compiler/passes.nim @@ -46,12 +46,6 @@ proc makePass*(open: TPassOpen = nil, result.close = close result.process = process - # This implements a memory preserving scheme: Top level statements are - # processed in a pipeline. The compiler never looks at a whole module - # any longer. However, this is simple to change, as new passes may perform - # whole program optimizations. For now, we avoid it to save a lot of memory. -proc processModule*(module: PSym, stream: PLLStream, rd: PRodReader) - # the semantic checker needs these: var gImportModule*: proc (m: PSym, fileIdx: int32): PSym {.nimcall.} @@ -160,7 +154,8 @@ proc processImplicits(implicits: seq[string], nodeKind: TNodeKind, importStmt.addSon str if not processTopLevelStmt(importStmt, a): break -proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = +proc processModule*(module: PSym, stream: PLLStream, + rd: PRodReader): bool {.discardable.} = var p: TParsers a: TPassContextArray @@ -173,7 +168,7 @@ proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = s = llStreamOpen(filename, fmRead) if s == nil: rawMessage(errCannotOpenFile, filename) - return + return false else: s = stream while true: @@ -211,4 +206,4 @@ proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = var n = loadInitSection(rd) for i in countup(0, sonsLen(n) - 1): processTopLevelStmtCached(n.sons[i], a) closePassesCached(a) - + result = true diff --git a/compiler/scriptconfig.nim b/compiler/scriptconfig.nim index 8b2653bc9..0f1dfaa1e 100644 --- a/compiler/scriptconfig.nim +++ b/compiler/scriptconfig.nim @@ -150,7 +150,7 @@ proc runNimScript*(scriptName: string; freshDefines=true) = vm.globalCtx = setupVM(m, scriptName) compileSystemModule() - processModule(m, llStreamOpen(scriptName, fmRead), nil) + discard processModule(m, llStreamOpen(scriptName, fmRead), nil) # ensure we load 'system.nim' again for the real non-config stuff! resetAllModulesHard() From c5ffdd03897225ebcb8bef23bdb64f212c45e8e8 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Tue, 30 Aug 2016 23:15:08 +0300 Subject: [PATCH 065/292] Protect data argument for GC. --- lib/pure/asyncdispatch.nim | 7 ++++++- lib/upcoming/asyncdispatch.nim | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index 79bc1b96d..cefa233be 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -827,14 +827,17 @@ when defined(windows) or defined(nimdoc): var retFuture = newFuture[void]("send") var dataBuf: TWSABuf - dataBuf.buf = data # since this is not used in a callback, this is fine + dataBuf.buf = data dataBuf.len = data.len.ULONG + GC_ref(data) # we need to protect data until send operation is completed + # or failed. var bytesReceived, lowFlags: Dword var ol = PCustomOverlapped() GC_ref(ol) ol.data = CompletionData(fd: socket, cb: proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = + GC_unref(data) # if operation completed `data` must be released. if not retFuture.finished: if errcode == OSErrorCode(-1): retFuture.complete() @@ -851,6 +854,8 @@ when defined(windows) or defined(nimdoc): let err = osLastError() if err.int32 != ERROR_IO_PENDING: GC_unref(ol) + GC_unref(data) # if operation failed `data` must be released, because + # completion routine will not be called. if flags.isDisconnectionError(err): retFuture.complete() else: diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index 19c9815d2..4a079e895 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -796,14 +796,17 @@ when defined(windows) or defined(nimdoc): var retFuture = newFuture[void]("send") var dataBuf: TWSABuf - dataBuf.buf = data # since this is not used in a callback, this is fine + dataBuf.buf = data dataBuf.len = data.len.ULONG + GC_ref(data) # we need to protect data until send operation is completed + # or failed. var bytesReceived, lowFlags: Dword var ol = PCustomOverlapped() GC_ref(ol) ol.data = CompletionData(fd: socket, cb: proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = + GC_unref(data) # if operation completed `data` must be released. if not retFuture.finished: if errcode == OSErrorCode(-1): retFuture.complete() @@ -820,6 +823,8 @@ when defined(windows) or defined(nimdoc): let err = osLastError() if err.int32 != ERROR_IO_PENDING: GC_unref(ol) + GC_unref(data) # if operation failed `data` must be released, because + # completion routine will not be called. if flags.isDisconnectionError(err): retFuture.complete() else: From b75ddf5ba22f2c09e0ca86d2f06c964ec11f9219 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Wed, 31 Aug 2016 10:30:25 +0300 Subject: [PATCH 066/292] Fix 32bit architecture problems with SelectEvent. --- lib/pure/ioselects/ioselectors_epoll.nim | 4 ++-- lib/pure/ioselects/ioselectors_poll.nim | 2 +- lib/pure/ioselects/ioselectors_select.nim | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/pure/ioselects/ioselectors_epoll.nim b/lib/pure/ioselects/ioselectors_epoll.nim index 92b2cdc07..4bc6e9d51 100644 --- a/lib/pure/ioselects/ioselectors_epoll.nim +++ b/lib/pure/ioselects/ioselectors_epoll.nim @@ -407,8 +407,8 @@ proc selectInto*[T](s: Selector[T], timeout: int, inc(i) continue elif Event.User in skey.events: - var data: uint = 0 - if posix.read(fdi.cint, addr data, sizeof(uint)) != sizeof(uint): + var data: uint64 = 0 + if posix.read(fdi.cint, addr data, sizeof(uint64)) != sizeof(uint64): let err = osLastError() if err == OSErrorCode(EAGAIN): inc(i) diff --git a/lib/pure/ioselects/ioselectors_poll.nim b/lib/pure/ioselects/ioselectors_poll.nim index d2a0a1273..56be35c70 100644 --- a/lib/pure/ioselects/ioselectors_poll.nim +++ b/lib/pure/ioselects/ioselectors_poll.nim @@ -245,7 +245,7 @@ proc selectInto*[T](s: Selector[T], timeout: int, skey.key.events.incl(Event.Read) if Event.User in skey.events: var data: uint64 = 0 - if posix.read(fd, addr data, sizeof(int)) != sizeof(int): + if posix.read(fd, addr data, sizeof(uint64)) != sizeof(uint64): let err = osLastError() if err != OSErrorCode(EAGAIN): raiseOSError(osLastError()) diff --git a/lib/pure/ioselects/ioselectors_select.nim b/lib/pure/ioselects/ioselectors_select.nim index f8099f9a0..ddb70b507 100644 --- a/lib/pure/ioselects/ioselectors_select.nim +++ b/lib/pure/ioselects/ioselectors_select.nim @@ -155,9 +155,9 @@ when defined(windows): result.wsock = wsock proc setEvent*(ev: SelectEvent) = - var data: int = 1 + var data: uint64 = 1 if winlean.send(ev.wsock, cast[pointer](addr data), - cint(sizeof(int)), 0) != sizeof(int): + cint(sizeof(uint64)), 0) != sizeof(uint64): raiseOSError(osLastError()) proc close*(ev: SelectEvent) = From 0a90613288e4944cdae032ff3fea8fd0829a2e20 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Tue, 30 Aug 2016 11:26:09 +0200 Subject: [PATCH 067/292] nimsuggest: correct documentation --- doc/nimsuggest.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/nimsuggest.rst b/doc/nimsuggest.rst index 2b52196b9..4da39b5d0 100644 --- a/doc/nimsuggest.rst +++ b/doc/nimsuggest.rst @@ -80,7 +80,7 @@ a location. A query location consists of: ``col`` An integer with the column you are going to query. For the - compiler columns start at **1**. + compiler columns start at **0**. Definitions @@ -160,7 +160,7 @@ tab characters (``\t``). The values of each column are: 6. Line where the symbol is located in the file. Lines start to count at **1**. 7. Column where the symbol is located in the file. Columns start - to count at **1**. + to count at **0**. 8. Docstring for the symbol if available or the empty string. To differentiate the docstring from end of answer, the docstring is always provided enclosed in double quotes, and From f6a2ff731b8d7288542d8dff93937c68d721edd1 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Tue, 30 Aug 2016 11:26:23 +0200 Subject: [PATCH 068/292] fixes #4672 --- compiler/sigmatch.nim | 2 +- tests/generics/ttypeclass_to_typeclass.nim | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/generics/ttypeclass_to_typeclass.nim diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index 7cdaa197d..1abfaab69 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -1075,7 +1075,7 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, doBind = true): TTypeRelation = of tyBuiltInTypeClass: considerPreviousT: let targetKind = f.sons[0].kind - if targetKind == a.skipTypes({tyRange, tyGenericInst}).kind or + if targetKind == a.skipTypes({tyRange, tyGenericInst, tyBuiltInTypeClass}).kind or (targetKind in {tyProc, tyPointer} and a.kind == tyNil): put(c, f, a) return isGeneric diff --git a/tests/generics/ttypeclass_to_typeclass.nim b/tests/generics/ttypeclass_to_typeclass.nim new file mode 100644 index 000000000..a5f010450 --- /dev/null +++ b/tests/generics/ttypeclass_to_typeclass.nim @@ -0,0 +1,12 @@ +# bug #4672 +type + EnumContainer[T: enum] = object + v: T + SomeEnum {.pure.} = enum + A,B,C + +proc value[T: enum](this: EnumContainer[T]): T = + this.v + +var enumContainer: EnumContainer[SomeEnum] +discard enumContainer.value() From 3a13706d7d88527dca8140bcc71a5560ba146d31 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 1 Sep 2016 13:01:22 +0200 Subject: [PATCH 069/292] fixes #4673 --- compiler/aliases.nim | 3 ++- compiler/ccgexprs.nim | 5 +++-- compiler/ccgtrav.nim | 4 +++- compiler/ccgtypes.nim | 6 +++--- compiler/cgen.nim | 2 +- compiler/jsgen.nim | 2 +- compiler/jstypes.nim | 2 +- compiler/lowerings.nim | 4 ++-- compiler/semasgn.nim | 3 ++- compiler/semexprs.nim | 6 +++--- compiler/semfields.nim | 2 +- compiler/seminst.nim | 2 +- compiler/sempass2.nim | 2 +- compiler/semstmts.nim | 2 +- compiler/semtypes.nim | 8 +++++--- compiler/sigmatch.nim | 25 ++++++++++++++++++++++--- compiler/suggest.nim | 2 +- compiler/types.nim | 12 ++++++++---- tests/objects/tinherit_from_generic.nim | 13 +++++++++++++ 19 files changed, 74 insertions(+), 31 deletions(-) create mode 100644 tests/objects/tinherit_from_generic.nim diff --git a/compiler/aliases.nim b/compiler/aliases.nim index 4b592ee60..4186900ec 100644 --- a/compiler/aliases.nim +++ b/compiler/aliases.nim @@ -46,7 +46,8 @@ proc isPartOfAux(a, b: PType, marker: var IntSet): TAnalysisResult = if compareTypes(a, b, dcEqIgnoreDistinct): return arYes case a.kind of tyObject: - result = isPartOfAux(a.sons[0], b, marker) + if a.sons[0] != nil: + result = isPartOfAux(a.sons[0].skipTypes(skipPtrs), b, marker) if result == arNo: result = isPartOfAux(a.n, b, marker) of tyGenericInst, tyDistinct: result = isPartOfAux(lastSon(a), b, marker) diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 719bc195c..e1ee6f1de 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -726,6 +726,7 @@ proc lookupFieldAgain(p: BProc, ty: PType; field: PSym; r: var Rope): PSym = var ty = ty assert r != nil while ty != nil: + ty = ty.skipTypes(skipPtrs) assert(ty.kind in {tyTuple, tyObject}) result = lookupInRecord(ty.n, field.name) if result != nil: break @@ -1257,7 +1258,7 @@ proc genOf(p: BProc, x: PNode, typ: PType, d: var TLoc) = if not p.module.compileToCpp: while t.kind == tyObject and t.sons[0] != nil: add(r, ~".Sup") - t = skipTypes(t.sons[0], typedescInst) + t = skipTypes(t.sons[0], skipPtrs) if isObjLackingTypeField(t): globalError(x.info, errGenerated, "no 'of' operator available for pure objects") @@ -1875,7 +1876,7 @@ proc upConv(p: BProc, n: PNode, d: var TLoc) = if not p.module.compileToCpp: while t.kind == tyObject and t.sons[0] != nil: add(r, ".Sup") - t = skipTypes(t.sons[0], abstractInst) + t = skipTypes(t.sons[0], skipPtrs) if nilCheck != nil: linefmt(p, cpsStmts, "if ($1) #chckObj($2.m_type, $3);$n", nilCheck, r, genTypeInfo(p.module, dest)) diff --git a/compiler/ccgtrav.nim b/compiler/ccgtrav.nim index c4d47f148..a8c079b35 100644 --- a/compiler/ccgtrav.nim +++ b/compiler/ccgtrav.nim @@ -73,7 +73,9 @@ proc genTraverseProc(c: var TTraversalClosure, accessor: Rope, typ: PType) = lineF(p, cpsStmts, "}$n", []) of tyObject: for i in countup(0, sonsLen(typ) - 1): - genTraverseProc(c, accessor.parentObj(c.p.module), typ.sons[i]) + var x = typ.sons[i] + if x != nil: x = x.skipTypes(skipPtrs) + genTraverseProc(c, accessor.parentObj(c.p.module), x) if typ.n != nil: genTraverseProc(c, accessor, typ.n) of tyTuple: let typ = getUniqueType(typ) diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index e30395d2e..15fefa944 100644 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -475,11 +475,11 @@ proc getRecordDesc(m: BModule, typ: PType, name: Rope, hasField = true elif m.compileToCpp: appcg(m, result, " : public $1 {$n", - [getTypeDescAux(m, typ.sons[0], check)]) + [getTypeDescAux(m, typ.sons[0].skipTypes(skipPtrs), check)]) hasField = true else: appcg(m, result, " {$n $1 Sup;$n", - [getTypeDescAux(m, typ.sons[0], check)]) + [getTypeDescAux(m, typ.sons[0].skipTypes(skipPtrs), check)]) hasField = true else: addf(result, " {$n", [name]) @@ -901,7 +901,7 @@ proc genObjectInfo(m: BModule, typ, origType: PType, name: Rope) = addf(m.s[cfsTypeInit3], "$1.node = &$2;$n", [name, tmp]) var t = typ.sons[0] while t != nil: - t = t.skipTypes(abstractInst) + t = t.skipTypes(skipPtrs) t.flags.incl tfObjHasKids t = t.sons[0] diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 42883b590..4a3113edf 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -246,7 +246,7 @@ proc genObjectInit(p: BProc, section: TCProcSection, t: PType, a: TLoc, if not p.module.compileToCpp: while (s.kind == tyObject) and (s.sons[0] != nil): add(r, ".Sup") - s = skipTypes(s.sons[0], abstractInst) + s = skipTypes(s.sons[0], skipPtrs) linefmt(p, section, "$1.m_type = $2;$n", r, genTypeInfo(p.module, t)) of frEmbedded: # worst case for performance: diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 3e56e2f41..d17f5580e 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1364,7 +1364,7 @@ proc createObjInitList(p: PProc, typ: PType, excludedFieldIDs: IntSet, output: v if output.len > 0: output.add(", ") addf(output, "m_type: $1" | "'m_type' => $#", [genTypeInfo(p, t)]) while t != nil: - createRecordVarAux(p, t.n, excludedFieldIDs, output) + createRecordVarAux(p, t.skipTypes(skipPtrs).n, excludedFieldIDs, output) t = t.sons[0] proc arrayTypeForElemType(typ: PType): string = diff --git a/compiler/jstypes.nim b/compiler/jstypes.nim index cf1679ee4..0aaf93579 100644 --- a/compiler/jstypes.nim +++ b/compiler/jstypes.nim @@ -76,7 +76,7 @@ proc genObjectInfo(p: PProc, typ: PType, name: Rope) = addf(p.g.typeInfo, "$1.node = NNI$2;$n", [name, rope(typ.id)]) if (typ.kind == tyObject) and (typ.sons[0] != nil): addf(p.g.typeInfo, "$1.base = $2;$n", - [name, genTypeInfo(p, typ.sons[0])]) + [name, genTypeInfo(p, typ.sons[0].skipTypes(skipPtrs))]) proc genTupleFields(p: PProc, typ: PType): Rope = var s: Rope = nil diff --git a/compiler/lowerings.nim b/compiler/lowerings.nim index 36eb24653..9db4383f6 100644 --- a/compiler/lowerings.nim +++ b/compiler/lowerings.nim @@ -172,7 +172,7 @@ proc indirectAccess*(a: PNode, b: string, info: TLineInfo): PNode = if field != nil: break t = t.sons[0] if t == nil: break - t = t.skipTypes(abstractInst) + t = t.skipTypes(skipPtrs) #if field == nil: # echo "FIELD ", b # debug deref.typ @@ -193,7 +193,7 @@ proc getFieldFromObj*(t: PType; v: PSym): PSym = if result != nil: break t = t.sons[0] if t == nil: break - t = t.skipTypes(abstractInst) + t = t.skipTypes(skipPtrs) proc indirectAccess*(a: PNode, b: PSym, info: TLineInfo): PNode = # returns a[].b as a node diff --git a/compiler/semasgn.nim b/compiler/semasgn.nim index 9702128ba..2e925e386 100644 --- a/compiler/semasgn.nim +++ b/compiler/semasgn.nim @@ -203,7 +203,8 @@ proc liftBodyAux(c: var TLiftCtx; t: PType; body, x, y: PNode) = defaultOp(c, t, body, x, y) of tyObject, tyDistinct: if not considerOverloadedOp(c, t, body, x, y): - if t.sons[0] != nil: liftBodyAux(c, t.sons[0], body, x, y) + if t.sons[0] != nil: + liftBodyAux(c, t.sons[0].skipTypes(skipPtrs), body, x, y) if t.kind == tyObject: liftBodyObj(c, t.n, body, x, y) of tyTuple: liftBodyTup(c, t, body, x, y) diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 274bb15b9..5c29530b8 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -1070,7 +1070,7 @@ proc semSym(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode = result = check return result if ty.sons[0] == nil: break - ty = skipTypes(ty.sons[0], {tyGenericInst}) + ty = skipTypes(ty.sons[0], skipPtrs) # old code, not sure if it's live code: markUsed(n.info, s) styleCheckUse(n.info, s) @@ -1148,7 +1148,7 @@ proc builtinFieldAccess(c: PContext, n: PNode, flags: TExprFlags): PNode = f = lookupInRecordAndBuildCheck(c, n, ty.n, i, check) if f != nil: break if ty.sons[0] == nil: break - ty = skipTypes(ty.sons[0], {tyGenericInst}) + ty = skipTypes(ty.sons[0], skipPtrs) if f != nil: if fieldVisible(c, f): # is the access to a public field or in the same module or in a friend? @@ -2108,7 +2108,7 @@ proc semObjConstr(c: PContext, n: PNode, flags: TExprFlags): PNode = f = lookupInRecordAndBuildCheck(c, it, t.n, id, check) if f != nil: break if t.sons[0] == nil: break - t = skipTypes(t.sons[0], {tyGenericInst}) + t = skipTypes(t.sons[0], skipPtrs) if f != nil and fieldVisible(c, f): it.sons[0] = newSymNode(f) e = fitNode(c, f.typ, e) diff --git a/compiler/semfields.nim b/compiler/semfields.nim index 2e6c6c3ea..9d8cea862 100644 --- a/compiler/semfields.nim +++ b/compiler/semfields.nim @@ -152,7 +152,7 @@ proc semForFields(c: PContext, n: PNode, m: TMagic): PNode = while t.kind == tyObject: semForObjectFields(fc, t.n, n, stmts) if t.sons[0] == nil: break - t = skipTypes(t.sons[0], abstractPtrs) + t = skipTypes(t.sons[0], skipPtrs) dec(c.p.nestedLoopCounter) # for TR macros this 'while true: ...; break' loop is pretty bad, so # we avoid it now if we can: diff --git a/compiler/seminst.nim b/compiler/seminst.nim index 498ebc3fb..d7cad6a2f 100644 --- a/compiler/seminst.nim +++ b/compiler/seminst.nim @@ -47,7 +47,7 @@ proc rawHandleSelf(c: PContext; owner: PSym) = while t.kind == tyObject: addObjFieldsToLocalScope(c, t.n) if t.sons[0] == nil: break - t = t.sons[0].skipTypes(abstractPtrs) + t = t.sons[0].skipTypes(skipPtrs) proc pushProcCon*(c: PContext; owner: PSym) = rawPushProcCon(c, owner) diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim index 3908fa26e..df9b3f69c 100644 --- a/compiler/sempass2.nim +++ b/compiler/sempass2.nim @@ -131,7 +131,7 @@ proc guardDotAccess(a: PEffects; n: PNode) = if field != nil: break ty = ty.sons[0] if ty == nil: break - ty = ty.skipTypes(abstractPtrs) + ty = ty.skipTypes(skipPtrs) if field == nil: localError(n.info, errGenerated, "invalid guard field: " & g.name.s) return diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index cd96600ec..97c3b6ddd 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -659,7 +659,7 @@ proc semRaise(c: PContext, n: PNode): PNode = if n.sons[0].kind != nkEmpty: n.sons[0] = semExprWithType(c, n.sons[0]) var typ = n.sons[0].typ - if typ.kind != tyRef or typ.sons[0].kind != tyObject: + if typ.kind != tyRef or typ.lastSon.kind != tyObject: localError(n.info, errExprCannotBeRaised) proc addGenericParamListToScope(c: PContext, n: PNode) = diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 3834d0b51..ed576f85e 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -661,11 +661,12 @@ proc semObjectNode(c: PContext, n: PNode, prev: PType): PType = if n.sonsLen == 0: return newConstraint(c, tyObject) var check = initIntSet() var pos = 0 - var base: PType = nil + var base, realBase: PType = nil # n.sons[0] contains the pragmas (if any). We process these later... checkSonsLen(n, 3) if n.sons[1].kind != nkEmpty: - base = skipTypesOrNil(semTypeNode(c, n.sons[1].sons[0], nil), skipPtrs) + realBase = semTypeNode(c, n.sons[1].sons[0], nil) + base = skipTypesOrNil(realBase, skipPtrs) if base.isNil: localError(n.info, errIllegalRecursionInTypeX, "object") else: @@ -676,9 +677,10 @@ proc semObjectNode(c: PContext, n: PNode, prev: PType): PType = if concreteBase.kind != tyError: localError(n.sons[1].info, errInheritanceOnlyWithNonFinalObjects) base = nil + realBase = nil if n.kind != nkObjectTy: internalError(n.info, "semObjectNode") result = newOrPrevType(tyObject, prev, c) - rawAddSon(result, base) + rawAddSon(result, realBase) if result.n.isNil: result.n = newNodeI(nkRecList, n.info) else: diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index 1abfaab69..90435f9c0 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -352,18 +352,28 @@ proc handleFloatRange(f, a: PType): TTypeRelation = else: result = isIntConv else: result = isNone -proc isObjectSubtype(a, f: PType): int = +proc isObjectSubtype(c: var TCandidate; a, f, fGenericOrigin: PType): int = var t = a assert t.kind == tyObject var depth = 0 + var last = a while t != nil and not sameObjectTypes(f, t): assert t.kind == tyObject t = t.sons[0] if t == nil: break - t = skipTypes(t, {tyGenericInst}) + last = t + t = skipTypes(t, skipPtrs) inc depth if t != nil: + if fGenericOrigin != nil and last.kind == tyGenericInst and + last.len-1 == fGenericOrigin.len: + for i in countup(1, sonsLen(fGenericOrigin) - 1): + let x = PType(idTableGet(c.bindings, fGenericOrigin.sons[i])) + if x == nil: + put(c, fGenericOrigin.sons[i], last.sons[i]) result = depth + else: + result = -1 type SkippedPtr = enum skippedNone, skippedRef, skippedPtr @@ -896,7 +906,7 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, doBind = true): TTypeRelation = result = isEqual # elif tfHasMeta in f.flags: result = recordRel(c, f, a) else: - var depth = isObjectSubtype(a, f) + var depth = isObjectSubtype(c, a, f, nil) if depth > 0: inc(c.inheritancePenalty, depth) result = isSubtype @@ -1012,6 +1022,15 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, doBind = true): TTypeRelation = result = isGeneric else: let genericBody = f.sons[0] + var askip = skippedNone + var fskip = skippedNone + let aobj = x.skipToObject(askip) + let fobj = genericBody.lastSon.skipToObject(fskip) + if fobj != nil and aobj != nil and askip == fskip: + let depth = isObjectSubtype(c, aobj, fobj, f) + if depth >= 0: + c.inheritancePenalty += depth + return if depth == 0: isGeneric else: isSubtype result = typeRel(c, genericBody, x) if result != isNone: # see tests/generics/tgeneric3.nim for an example that triggers this diff --git a/compiler/suggest.nim b/compiler/suggest.nim index c127b968c..f331fce69 100644 --- a/compiler/suggest.nim +++ b/compiler/suggest.nim @@ -273,7 +273,7 @@ proc suggestFieldAccess(c: PContext, n: PNode, outputs: var int) = while true: suggestObject(c, t.n, outputs) if t.sons[0] == nil: break - t = skipTypes(t.sons[0], {tyGenericInst}) + t = skipTypes(t.sons[0], skipPtrs) suggestOperations(c, n, typ, outputs) elif typ.kind == tyTuple and typ.n != nil: suggestSymList(c, typ.n, outputs) diff --git a/compiler/types.nim b/compiler/types.nim index 4690d5a1f..3db0c4507 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -94,7 +94,8 @@ proc invalidGenericInst(f: PType): bool = proc isPureObject(typ: PType): bool = var t = typ - while t.kind == tyObject and t.sons[0] != nil: t = t.sons[0] + while t.kind == tyObject and t.sons[0] != nil: + t = t.sons[0].skipTypes(skipPtrs) result = t.sym != nil and sfPure in t.sym.flags proc getOrdValue(n: PNode): BiggestInt = @@ -228,7 +229,8 @@ proc searchTypeForAux(t: PType, predicate: TTypePredicate, if result: return case t.kind of tyObject: - result = searchTypeForAux(t.sons[0], predicate, marker) + if t.sons[0] != nil: + result = searchTypeForAux(t.sons[0].skipTypes(skipPtrs), predicate, marker) if not result: result = searchTypeNodeForAux(t.n, predicate, marker) of tyGenericInst, tyDistinct: result = searchTypeForAux(lastSon(t), predicate, marker) @@ -265,7 +267,9 @@ proc analyseObjectWithTypeFieldAux(t: PType, if searchTypeNodeForAux(t.n, isObjectWithTypeFieldPredicate, marker): return frEmbedded for i in countup(0, sonsLen(t) - 1): - res = analyseObjectWithTypeFieldAux(t.sons[i], marker) + var x = t.sons[i] + if x != nil: x = x.skipTypes(skipPtrs) + res = analyseObjectWithTypeFieldAux(x, marker) if res == frEmbedded: return frEmbedded if res == frHeader: result = frHeader @@ -1293,7 +1297,7 @@ proc computeSizeAux(typ: PType, a: var BiggestInt): BiggestInt = a = maxAlign of tyObject: if typ.sons[0] != nil: - result = computeSizeAux(typ.sons[0], a) + result = computeSizeAux(typ.sons[0].skipTypes(skipPtrs), a) if result < 0: return maxAlign = a elif isObjectWithTypeFieldPredicate(typ): diff --git a/tests/objects/tinherit_from_generic.nim b/tests/objects/tinherit_from_generic.nim new file mode 100644 index 000000000..6e0e929ce --- /dev/null +++ b/tests/objects/tinherit_from_generic.nim @@ -0,0 +1,13 @@ +discard """ + output: '''true''' +""" + +# bug #4673 +type + BaseObj[T] = ref object of RootObj + SomeObj = ref object of BaseObj[int] + +proc doSomething[T](o: BaseObj[T]) = + echo "true" +var o = new(SomeObj) +o.doSomething() # Error: cannot instantiate: 'T' From 19f83ccd0bf03dea93698a5611c881f57499ca12 Mon Sep 17 00:00:00 2001 From: Charles Blake Date: Thu, 1 Sep 2016 07:34:42 -0400 Subject: [PATCH 070/292] Add terminal.terminalWidth and supporting types/calls. --- lib/posix/termios.nim | 10 ++++++++++ lib/pure/terminal.nim | 45 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/lib/posix/termios.nim b/lib/posix/termios.nim index c3934c6a9..88c3edf01 100644 --- a/lib/posix/termios.nim +++ b/lib/posix/termios.nim @@ -259,3 +259,13 @@ proc tcFlow*(fd: cint; action: cint): cint {.importc: "tcflow", # Get process group ID for session leader for controlling terminal FD. proc tcGetSid*(fd: cint): Pid {.importc: "tcgetsid", header: "".} + +# Window size ioctl. Should work on on any Unix that xterm has been ported to. +var TIOCGWINSZ*{.importc, header: "".}: culong + +type ioctl_winsize* {.importc: "struct winsize", header: "", + final, pure.} = object + ws_row*, ws_col*, ws_xpixel*, ws_ypixel*: cushort + +proc ioctl*(fd: cint, request: culong, reply: ptr ioctl_winsize): int {. + importc: "ioctl", header: "", varargs.} diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index 1f34ec07e..329c50f3e 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -60,6 +60,22 @@ when defined(windows): lpConsoleScreenBufferInfo: ptr CONSOLE_SCREEN_BUFFER_INFO): WINBOOL{.stdcall, dynlib: "kernel32", importc: "GetConsoleScreenBufferInfo".} + proc terminalWidth*(h: Handle): int = + var csbi: CONSOLE_SCREEN_BUFFER_INFO + if getConsoleScreenBufferInfo(h, addr csbi) != 0: + return int(csbi.srWindow.Right - csbi.srWindow.Left + 1) + return 0 + + proc terminalWidth*(): int = + var w: int = 0 + w = terminalWidth(getStdHandle(STD_INPUT_HANDLE)) + if w > 0: return w + w = terminalWidth(getStdHandle(STD_OUTPUT_HANDLE)) + if w > 0: return w + w = terminalWidth(getStdHandle(STD_ERROR_HANDLE)) + if w > 0: return w + return 80 + proc setConsoleCursorPosition(hConsoleOutput: HANDLE, dwCursorPosition: COORD): WINBOOL{. stdcall, dynlib: "kernel32", importc: "SetConsoleCursorPosition".} @@ -123,7 +139,7 @@ when defined(windows): if f == stderr: hStderr else: hStdout else: - import termios + import termios, posix, os, parseutils proc setRaw(fd: FileHandle, time: cint = TCSAFLUSH) = var mode: Termios @@ -137,6 +153,33 @@ else: mode.c_cc[VTIME] = 0.cuchar discard fd.tcsetattr(time, addr mode) + proc terminalWidthIoctl*(fds: openArray[int]): int = + ## Returns terminal width from first fd that supports the ioctl. + + var win: ioctl_winsize + for fd in fds: + if ioctl(cint(fd), TIOCGWINSZ, addr win) != -1: + return int(win.ws_col) + return 0 + + proc terminalWidth*(): int = + ## Returns **some** reasonable terminal width from either standard file + ## descriptors, controlling terminal, environment variables or tradition. + + var L_ctermid{.importc, header: "".}: cint + var w = terminalWidthIoctl([0, 1, 2]) #Try standard file descriptors + if w > 0: return w + var cterm = newString(L_ctermid) #Try controlling tty + var fd = open(ctermid(cstring(cterm)), O_RDONLY) + if fd != -1: + w = terminalWidthIoctl([ int(fd) ]) + discard close(fd) + if w > 0: return w + var s = getEnv("COLUMNS") #Try standard env var + if len(s) > 0 and parseInt(s, w) > 0 and w > 0: + return w + return 80 #Finally default to venerable value + proc setCursorPos*(f: File, x, y: int) = ## Sets the terminal's cursor to the (x,y) position. ## (0,0) is the upper left of the screen. From 7b73a94afc3ff604fab6daab58d2b3eabddf70ca Mon Sep 17 00:00:00 2001 From: Charles Blake Date: Thu, 1 Sep 2016 07:54:17 -0400 Subject: [PATCH 071/292] Oops - L_ctermid must be a global var to compile. --- lib/pure/terminal.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index 329c50f3e..90be43130 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -162,11 +162,11 @@ else: return int(win.ws_col) return 0 + var L_ctermid{.importc, header: "".}: cint proc terminalWidth*(): int = - ## Returns **some** reasonable terminal width from either standard file + ## Returns some reasonable terminal width from either standard file ## descriptors, controlling terminal, environment variables or tradition. - var L_ctermid{.importc, header: "".}: cint var w = terminalWidthIoctl([0, 1, 2]) #Try standard file descriptors if w > 0: return w var cterm = newString(L_ctermid) #Try controlling tty From 5db1de87b1e6c1163ebca91852bd55e93f0f09ed Mon Sep 17 00:00:00 2001 From: Charles Blake Date: Thu, 1 Sep 2016 08:16:28 -0400 Subject: [PATCH 072/292] Convert TaintedString to string. --- lib/pure/terminal.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index 90be43130..63419114a 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -176,7 +176,7 @@ else: discard close(fd) if w > 0: return w var s = getEnv("COLUMNS") #Try standard env var - if len(s) > 0 and parseInt(s, w) > 0 and w > 0: + if len(s) > 0 and parseInt(string(s), w) > 0 and w > 0: return w return 80 #Finally default to venerable value From 8df2078f08ad0abf3f50632ae783a997eb64b3be Mon Sep 17 00:00:00 2001 From: Charles Blake Date: Thu, 1 Sep 2016 08:33:39 -0400 Subject: [PATCH 073/292] Change type name to be more NEP-1-ish as per Araq request. --- lib/posix/termios.nim | 4 ++-- lib/pure/terminal.nim | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/posix/termios.nim b/lib/posix/termios.nim index 88c3edf01..f8de740d7 100644 --- a/lib/posix/termios.nim +++ b/lib/posix/termios.nim @@ -263,9 +263,9 @@ proc tcGetSid*(fd: cint): Pid {.importc: "tcgetsid", header: "".} # Window size ioctl. Should work on on any Unix that xterm has been ported to. var TIOCGWINSZ*{.importc, header: "".}: culong -type ioctl_winsize* {.importc: "struct winsize", header: "", +type IOctl_WinSize* {.importc: "struct winsize", header: "", final, pure.} = object ws_row*, ws_col*, ws_xpixel*, ws_ypixel*: cushort -proc ioctl*(fd: cint, request: culong, reply: ptr ioctl_winsize): int {. +proc ioctl*(fd: cint, request: culong, reply: ptr IOctl_WinSize): int {. importc: "ioctl", header: "", varargs.} diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index 63419114a..4fdb04e4f 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -156,7 +156,7 @@ else: proc terminalWidthIoctl*(fds: openArray[int]): int = ## Returns terminal width from first fd that supports the ioctl. - var win: ioctl_winsize + var win: IOctl_WinSize for fd in fds: if ioctl(cint(fd), TIOCGWINSZ, addr win) != -1: return int(win.ws_col) From d65589fe27c68e7e928c027898acd01cbed58d89 Mon Sep 17 00:00:00 2001 From: Charles Blake Date: Thu, 1 Sep 2016 08:49:07 -0400 Subject: [PATCH 074/292] Make Windows part match Unix part more closely per Araq request. --- lib/pure/terminal.nim | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index 4fdb04e4f..15c7f7323 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -60,19 +60,18 @@ when defined(windows): lpConsoleScreenBufferInfo: ptr CONSOLE_SCREEN_BUFFER_INFO): WINBOOL{.stdcall, dynlib: "kernel32", importc: "GetConsoleScreenBufferInfo".} - proc terminalWidth*(h: Handle): int = + proc terminalWidthIoctl*(handles: openArray[Handle]): int = var csbi: CONSOLE_SCREEN_BUFFER_INFO - if getConsoleScreenBufferInfo(h, addr csbi) != 0: - return int(csbi.srWindow.Right - csbi.srWindow.Left + 1) + for h in handles: + if getConsoleScreenBufferInfo(h, addr csbi) != 0: + return int(csbi.srWindow.Right - csbi.srWindow.Left + 1) return 0 proc terminalWidth*(): int = var w: int = 0 - w = terminalWidth(getStdHandle(STD_INPUT_HANDLE)) - if w > 0: return w - w = terminalWidth(getStdHandle(STD_OUTPUT_HANDLE)) - if w > 0: return w - w = terminalWidth(getStdHandle(STD_ERROR_HANDLE)) + w = terminalWidth([ getStdHandle(STD_INPUT_HANDLE), + getStdHandle(STD_OUTPUT_HANDLE), + getStdHandle(STD_ERROR_HANDLE) ] ) if w > 0: return w return 80 From 9c444039340c43dd3db2d2901673260b64b604a7 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 1 Sep 2016 16:19:45 +0200 Subject: [PATCH 075/292] fixes #4693 --- compiler/ccgtypes.nim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index 15fefa944..0c06354d8 100644 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -812,7 +812,9 @@ proc genTypeInfoAuxBase(m: BModule; typ, origType: PType; name, base: Rope) = proc genTypeInfoAux(m: BModule, typ, origType: PType, name: Rope) = var base: Rope if (sonsLen(typ) > 0) and (typ.sons[0] != nil): - base = genTypeInfo(m, typ.sons[0]) + var x = typ.sons[0] + if typ.kind == tyObject: x = x.skipTypes(skipPtrs) + base = genTypeInfo(m, x) else: base = rope("0") genTypeInfoAuxBase(m, typ, origType, name, base) From 11f7eb2d9b2ff22053aa6e3d442f43922842d5e6 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 1 Sep 2016 16:57:34 +0200 Subject: [PATCH 076/292] fixes #4689 --- lib/system/channels.nim | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/system/channels.nim b/lib/system/channels.nim index 68c0e32d2..caa709229 100644 --- a/lib/system/channels.nim +++ b/lib/system/channels.nim @@ -124,8 +124,7 @@ proc storeAux(dest, src: pointer, mt: PNimType, t: PRawChannel, of tyObject: # copy type field: var pint = cast[ptr PNimType](dest) - # XXX use dynamic type here! - pint[] = mt + pint[] = cast[ptr PNimType](src)[] if mt.base != nil: storeAux(dest, src, mt.base, t, mode) storeAux(dest, src, mt.node, t, mode) @@ -144,13 +143,12 @@ proc storeAux(dest, src: pointer, mt: PNimType, t: PRawChannel, else: unsureAsgnRef(x, nil) else: + let size = if mt.base.kind == tyObject: cast[ptr PNimType](s)[].size + else: mt.base.size if mode == mStore: - x[] = alloc(t.region, mt.base.size) + x[] = alloc(t.region, size) else: - # XXX we should use the dynamic type here too, but that is not stored - # in the inbox at all --> use source[]'s object type? but how? we need - # a tyRef to the object! - var obj = newObj(mt, mt.base.size) + var obj = newObj(mt, size) unsureAsgnRef(x, obj) storeAux(x[], s, mt.base, t, mode) if mode != mStore: dealloc(t.region, s) From 7b39545eb3cdb2ab21fc7fdff31567a75824cb43 Mon Sep 17 00:00:00 2001 From: Charles Blake Date: Thu, 1 Sep 2016 14:08:40 -0400 Subject: [PATCH 077/292] Evidently Travis build termios.h does not pull in sys/ioctl.h but my initial test system did. --- lib/posix/termios.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/posix/termios.nim b/lib/posix/termios.nim index f8de740d7..1fbccba9c 100644 --- a/lib/posix/termios.nim +++ b/lib/posix/termios.nim @@ -263,7 +263,7 @@ proc tcGetSid*(fd: cint): Pid {.importc: "tcgetsid", header: "".} # Window size ioctl. Should work on on any Unix that xterm has been ported to. var TIOCGWINSZ*{.importc, header: "".}: culong -type IOctl_WinSize* {.importc: "struct winsize", header: "", +type IOctl_WinSize* {.importc: "struct winsize", header: "", final, pure.} = object ws_row*, ws_col*, ws_xpixel*, ws_ypixel*: cushort From e4ddcd836ce723859b71d2d52be85e8eaed7e119 Mon Sep 17 00:00:00 2001 From: Charles Blake Date: Thu, 1 Sep 2016 14:44:33 -0400 Subject: [PATCH 078/292] Use new name for call to low-level terminalWidth. --- lib/pure/terminal.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index 15c7f7323..d4734c3e3 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -69,9 +69,9 @@ when defined(windows): proc terminalWidth*(): int = var w: int = 0 - w = terminalWidth([ getStdHandle(STD_INPUT_HANDLE), - getStdHandle(STD_OUTPUT_HANDLE), - getStdHandle(STD_ERROR_HANDLE) ] ) + w = terminalWidthIoctl([ getStdHandle(STD_INPUT_HANDLE), + getStdHandle(STD_OUTPUT_HANDLE), + getStdHandle(STD_ERROR_HANDLE) ] ) if w > 0: return w return 80 From b676a08b3a4632d80bf46cb57d8e72ddf3398b39 Mon Sep 17 00:00:00 2001 From: Ruslan Mustakov Date: Fri, 2 Sep 2016 19:15:59 +0700 Subject: [PATCH 079/292] Async read/write procedures no longer replace each other in upcoming asyncdispatch --- lib/upcoming/asyncdispatch.nim | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index 19c9815d2..3c11e082f 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -1368,19 +1368,25 @@ else: proc addRead*(fd: AsyncFD, cb: Callback) = let p = getGlobalDispatcher() + var newEvents = {Event.Read} withData(p.selector, fd.SocketHandle, adata) do: adata.readCB = cb + if adata.writeCB != nil: + newEvents.incl(Event.Write) do: raise newException(ValueError, "File descriptor not registered.") - p.selector.updateHandle(fd.SocketHandle, {Event.Read}) + p.selector.updateHandle(fd.SocketHandle, newEvents) proc addWrite*(fd: AsyncFD, cb: Callback) = let p = getGlobalDispatcher() + var newEvents = {Event.Write} withData(p.selector, fd.SocketHandle, adata) do: adata.writeCB = cb + if adata.readCB != nil: + newEvents.incl(Event.Read) do: raise newException(ValueError, "File descriptor not registered.") - p.selector.updateHandle(fd.SocketHandle, {Event.Write}) + p.selector.updateHandle(fd.SocketHandle, newEvents) proc poll*(timeout = 500) = var keys: array[64, ReadyKey[AsyncData]] From 0a28e45b951f525d6958668f09c8eeb90b06a725 Mon Sep 17 00:00:00 2001 From: Ruslan Mustakov Date: Fri, 2 Sep 2016 20:18:11 +0700 Subject: [PATCH 080/292] Added Gitter links to readme --- readme.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index f56b054d6..204b51906 100644 --- a/readme.md +++ b/readme.md @@ -68,13 +68,16 @@ problem. ## Community [![Join the Chat at irc.freenode.net#nim](https://img.shields.io/badge/IRC-join_chat_in_%23nim-blue.svg)](https://webchat.freenode.net/?channels=nim) +[![Join the Gitter channel](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/nim-lang/Nim) [![Get help](https://img.shields.io/badge/Forum-get%20help-4eb899.svg)](http://forum.nim-lang.org) [![Stackoverflow](https://img.shields.io/badge/stackoverflow-use_%23nim_tag-yellow.svg)](http://stackoverflow.com/questions/tagged/nim?sort=newest&pageSize=15) [![Follow @nim_lang!](https://img.shields.io/twitter/follow/nim_lang.svg?style=social)](https://twitter.com/nim_lang) * The [forum](http://forum.nim-lang.org/) - the best place to ask questions and to discuss Nim. -* [IRC (Freenode#nim)](https://webchat.freenode.net/?channels=nim) - the best place to discuss +* [IRC (Freenode#nim)](https://webchat.freenode.net/?channels=nim) - a place to discuss Nim in real-time, this is also where most development decision get made! +* [Gitter](https://gitter.im/nim-lang/Nim) allows to discuss Nim from your browser, one click to join. + There is a bridge between Gitter and IRC channels. * [Stackoverflow](http://stackoverflow.com/questions/tagged/nim) ## Contributing From 1528d7c6e8ede680e3810ffcf538ca5fda9abfc2 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 1 Sep 2016 22:05:05 +0200 Subject: [PATCH 081/292] fixes #4677 --- compiler/semtypinst.nim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/semtypinst.nim b/compiler/semtypinst.nim index 12620d55d..b809afab6 100644 --- a/compiler/semtypinst.nim +++ b/compiler/semtypinst.nim @@ -463,7 +463,8 @@ proc replaceTypeVarsTAux(cl: var TReplTypeVars, t: PType): PType = result.sons[i] = r propagateToOwner(result, r) - result.n = replaceTypeVarsN(cl, result.n) + if result.kind != tyProc: + result.n = replaceTypeVarsN(cl, result.n) case result.kind of tyArray: From 0e9d12639eb896797696925f84ad773a5906d980 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sat, 3 Sep 2016 11:03:07 +0200 Subject: [PATCH 082/292] fixes #4677 properly --- compiler/semtypinst.nim | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/compiler/semtypinst.nim b/compiler/semtypinst.nim index b809afab6..b42d58474 100644 --- a/compiler/semtypinst.nim +++ b/compiler/semtypinst.nim @@ -86,7 +86,7 @@ type proc replaceTypeVarsTAux(cl: var TReplTypeVars, t: PType): PType proc replaceTypeVarsS(cl: var TReplTypeVars, s: PSym): PSym -proc replaceTypeVarsN*(cl: var TReplTypeVars, n: PNode): PNode +proc replaceTypeVarsN*(cl: var TReplTypeVars, n: PNode; start=0): PNode template checkMetaInvariants(cl: TReplTypeVars, t: PType) = when false: @@ -151,7 +151,7 @@ proc reResolveCallsWithTypedescParams(cl: var TReplTypeVars, n: PNode): PNode = return n -proc replaceTypeVarsN(cl: var TReplTypeVars, n: PNode): PNode = +proc replaceTypeVarsN(cl: var TReplTypeVars, n: PNode; start=0): PNode = if n == nil: return result = copyNode(n) if n.typ != nil: @@ -195,7 +195,9 @@ proc replaceTypeVarsN(cl: var TReplTypeVars, n: PNode): PNode = var length = sonsLen(n) if length > 0: newSons(result, length) - for i in countup(0, length - 1): + if start > 0: + result.sons[0] = n.sons[0] + for i in countup(start, length - 1): result.sons[i] = replaceTypeVarsN(cl, n.sons[i]) proc replaceTypeVarsS(cl: var TReplTypeVars, s: PSym): PSym = @@ -462,9 +464,8 @@ proc replaceTypeVarsTAux(cl: var TReplTypeVars, t: PType): PType = r = skipTypes(r2, {tyPtr, tyRef}) result.sons[i] = r propagateToOwner(result, r) - - if result.kind != tyProc: - result.n = replaceTypeVarsN(cl, result.n) + # bug #4677: Do not instantiate effect lists + result.n = replaceTypeVarsN(cl, result.n, ord(result.kind==tyProc)) case result.kind of tyArray: From c2df609cd6b7da970044eab0e223c5c8ec06a58f Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sat, 3 Sep 2016 11:11:43 +0200 Subject: [PATCH 083/292] fixes a compiler crash; refs #4699 --- compiler/semfold.nim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/semfold.nim b/compiler/semfold.nim index 1cb726053..42fa60781 100644 --- a/compiler/semfold.nim +++ b/compiler/semfold.nim @@ -514,7 +514,8 @@ proc foldConv*(n, a: PNode; check = false): PNode = else: result = a result.typ = n.typ - if check: rangeCheck(n, result.intVal) + if check and result.kind in {nkCharLit..nkUInt64Lit}: + rangeCheck(n, result.intVal) of tyFloat..tyFloat64: case skipTypes(a.typ, abstractRange).kind of tyInt..tyInt64, tyEnum, tyBool, tyChar: From 3fef725d920f87f2f8bf8de80d746c8a8b568055 Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 3 Sep 2016 20:20:48 +1000 Subject: [PATCH 084/292] pickBestCandidate: pre-calculate candidates when symbol table modified --- compiler/semcall.nim | 114 +++++++++++++++++++++++++++---------------- 1 file changed, 72 insertions(+), 42 deletions(-) diff --git a/compiler/semcall.nim b/compiler/semcall.nim index b3fc020b1..5f7e5084b 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -34,55 +34,85 @@ proc sameMethodDispatcher(a, b: PSym): bool = proc determineType(c: PContext, s: PSym) +proc initCandidateSymbols(c: PContext, headSymbol: PNode, + initialBinding: PNode, + filter: TSymKinds, + best, alt: var TCandidate, + o: var TOverloadIter): seq[tuple[s: PSym, scope: int]] = + result = @[] + var symx = initOverloadIter(o, c, headSymbol) + while symx != nil: + if symx.kind in filter: + result.add((symx, o.lastOverloadScope)) + symx = nextOverloadIter(o, c, headSymbol) + if result.len > 0: + initCandidate(c, best, result[0].s, initialBinding, result[0].scope) + initCandidate(c, alt, result[0].s, initialBinding, result[0].scope) + best.state = csNoMatch + proc pickBestCandidate(c: PContext, headSymbol: PNode, n, orig: PNode, initialBinding: PNode, filter: TSymKinds, best, alt: var TCandidate, errors: var CandidateErrors) = - while true: - block pickAttempt: - var o: TOverloadIter - var sym = initOverloadIter(o, c, headSymbol) - # Thanks to the lazy semchecking for operands, we need to check whether - # 'initCandidate' modifies the symbol table (via semExpr). - # This can occur in cases like 'init(a, 1, (var b = new(Type2); b))' - let counterInitial = c.currentScope.symbols.counter + var o: TOverloadIter + var sym = initOverloadIter(o, c, headSymbol) + var scope = o.lastOverloadScope + # Thanks to the lazy semchecking for operands, we need to check whether + # 'initCandidate' modifies the symbol table (via semExpr). + # This can occur in cases like 'init(a, 1, (var b = new(Type2); b))' + let counterInitial = c.currentScope.symbols.counter + var syms: seq[tuple[s: PSym, scope: int]] + var nextSymIndex = 0 + while sym != nil: + if sym.kind in filter: # Initialise 'best' and 'alt' with the first available symbol - while sym != nil: - if sym.kind in filter: - initCandidate(c, best, sym, initialBinding, o.lastOverloadScope) - initCandidate(c, alt, sym, initialBinding, o.lastOverloadScope) - best.state = csNoMatch - break - else: - sym = nextOverloadIter(o, c, headSymbol) - var z: TCandidate - while sym != nil: - if sym.kind notin filter: - sym = nextOverloadIter(o, c, headSymbol) - continue - determineType(c, sym) - initCandidate(c, z, sym, initialBinding, o.lastOverloadScope) - if c.currentScope.symbols.counter != counterInitial: break pickAttempt - matches(c, n, orig, z) - if errors != nil: - errors.safeAdd((sym, int z.mutabilityProblem)) - if z.errors != nil: - for err in z.errors: - errors.add(err) - if z.state == csMatch: - # little hack so that iterators are preferred over everything else: - if sym.kind == skIterator: inc(z.exactMatches, 200) - case best.state - of csEmpty, csNoMatch: best = z - of csMatch: - var cmp = cmpCandidates(best, z) - if cmp < 0: best = z # x is better than the best so far - elif cmp == 0: alt = z # x is as good as the best so far - else: discard - sym = nextOverloadIter(o, c, headSymbol) - break # pick attempt was successful + initCandidate(c, best, sym, initialBinding, scope) + initCandidate(c, alt, sym, initialBinding, scope) + best.state = csNoMatch + break + else: + sym = nextOverloadIter(o, c, headSymbol) + scope = o.lastOverloadScope + var z: TCandidate + while sym != nil: + if sym.kind notin filter: + sym = nextOverloadIter(o, c, headSymbol) + scope = o.lastOverloadScope + continue + determineType(c, sym) + initCandidate(c, z, sym, initialBinding, scope) + if c.currentScope.symbols.counter == counterInitial or syms != nil: + matches(c, n, orig, z) + if errors != nil: + errors.safeAdd((sym, int z.mutabilityProblem)) + if z.errors != nil: + for err in z.errors: + errors.add(err) + if z.state == csMatch: + # little hack so that iterators are preferred over everything else: + if sym.kind == skIterator: inc(z.exactMatches, 200) + case best.state + of csEmpty, csNoMatch: best = z + of csMatch: + var cmp = cmpCandidates(best, z) + if cmp < 0: best = z # x is better than the best so far + elif cmp == 0: alt = z # x is as good as the best so far + else: + # Symbol table has been modified. Restart and pre-calculate all syms + # before any further candidate init and compare. SLOW, but rare case. + syms = initCandidateSymbols(c, headSymbol, initialBinding, filter, best, alt, o) + if syms == nil: + sym = nextOverloadIter(o, c, headSymbol) + scope = o.lastOverloadScope + elif nextSymIndex < syms.len: + # rare case: retrieve the next pre-calculated symbol + sym = syms[nextSymIndex].s + scope = syms[nextSymIndex].scope + nextSymIndex += 1 + else: + break proc notFoundError*(c: PContext, n: PNode, errors: CandidateErrors) = # Gives a detailed error message; this is separated from semOverloadedCall, From 685830de7962314448dbf0591489d88ade260af5 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Sat, 3 Sep 2016 13:41:56 +0300 Subject: [PATCH 085/292] Make upcoming version to be up to date with current version. --- lib/upcoming/asyncdispatch.nim | 75 ++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index 4a079e895..10f0fbfb6 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -957,7 +957,7 @@ when defined(windows) or defined(nimdoc): let dwLocalAddressLength = Dword(sizeof (Sockaddr_in) + 16) let dwRemoteAddressLength = Dword(sizeof(Sockaddr_in) + 16) - template completeAccept(): stmt {.immediate, dirty.} = + template completeAccept() {.dirty.} = var listenSock = socket let setoptRet = setsockopt(clientSock, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, addr listenSock, @@ -977,7 +977,7 @@ when defined(windows) or defined(nimdoc): client: clientSock.AsyncFD) ) - template failAccept(errcode): stmt = + template failAccept(errcode) = if flags.isDisconnectionError(errcode): var newAcceptFut = acceptAddr(socket, flags) newAcceptFut.callback = @@ -1760,7 +1760,7 @@ proc skipStmtList(node: NimNode): NimNode {.compileTime.} = result = node[0] template createCb(retFutureSym, iteratorNameSym, - name: expr): stmt {.immediate.} = + name: untyped) = var nameIterVar = iteratorNameSym #{.push stackTrace: off.} proc cb {.closure,gcsafe.} = @@ -1869,8 +1869,10 @@ proc processBody(node, retFutureSym: NimNode, else: result.add newCall(newIdentNode("complete"), retFutureSym) else: - result.add newCall(newIdentNode("complete"), retFutureSym, - node[0].processBody(retFutureSym, subTypeIsVoid, tryStmt)) + let x = node[0].processBody(retFutureSym, subTypeIsVoid, tryStmt) + if x.kind == nnkYieldStmt: result.add x + else: + result.add newCall(newIdentNode("complete"), retFutureSym, x) result.add newNimNode(nnkReturnStmt, node).add(newNilLit()) return # Don't process the children of this return stmt @@ -2040,38 +2042,40 @@ proc asyncSingleProc(prc: NimNode): NimNode {.compileTime.} = # -> complete(retFuture, result) var iteratorNameSym = genSym(nskIterator, $prc[0].getName & "Iter") var procBody = prc[6].processBody(retFutureSym, subtypeIsVoid, nil) - if not subtypeIsVoid: - procBody.insert(0, newNimNode(nnkPragma).add(newIdentNode("push"), - newNimNode(nnkExprColonExpr).add(newNimNode(nnkBracketExpr).add( - newIdentNode("warning"), newIdentNode("resultshadowed")), - newIdentNode("off")))) # -> {.push warning[resultshadowed]: off.} + # don't do anything with forward bodies (empty) + if procBody.kind != nnkEmpty: + if not subtypeIsVoid: + procBody.insert(0, newNimNode(nnkPragma).add(newIdentNode("push"), + newNimNode(nnkExprColonExpr).add(newNimNode(nnkBracketExpr).add( + newIdentNode("warning"), newIdentNode("resultshadowed")), + newIdentNode("off")))) # -> {.push warning[resultshadowed]: off.} - procBody.insert(1, newNimNode(nnkVarSection, prc[6]).add( - newIdentDefs(newIdentNode("result"), baseType))) # -> var result: T + procBody.insert(1, newNimNode(nnkVarSection, prc[6]).add( + newIdentDefs(newIdentNode("result"), baseType))) # -> var result: T - procBody.insert(2, newNimNode(nnkPragma).add( - newIdentNode("pop"))) # -> {.pop.}) + procBody.insert(2, newNimNode(nnkPragma).add( + newIdentNode("pop"))) # -> {.pop.}) - procBody.add( - newCall(newIdentNode("complete"), - retFutureSym, newIdentNode("result"))) # -> complete(retFuture, result) - else: - # -> complete(retFuture) - procBody.add(newCall(newIdentNode("complete"), retFutureSym)) + procBody.add( + newCall(newIdentNode("complete"), + retFutureSym, newIdentNode("result"))) # -> complete(retFuture, result) + else: + # -> complete(retFuture) + procBody.add(newCall(newIdentNode("complete"), retFutureSym)) - var closureIterator = newProc(iteratorNameSym, [newIdentNode("FutureBase")], - procBody, nnkIteratorDef) - closureIterator[4] = newNimNode(nnkPragma, prc[6]).add(newIdentNode("closure")) - outerProcBody.add(closureIterator) + var closureIterator = newProc(iteratorNameSym, [newIdentNode("FutureBase")], + procBody, nnkIteratorDef) + closureIterator[4] = newNimNode(nnkPragma, prc[6]).add(newIdentNode("closure")) + outerProcBody.add(closureIterator) - # -> createCb(retFuture) - #var cbName = newIdentNode("cb") - var procCb = newCall(bindSym"createCb", retFutureSym, iteratorNameSym, - newStrLitNode(prc[0].getName)) - outerProcBody.add procCb + # -> createCb(retFuture) + #var cbName = newIdentNode("cb") + var procCb = getAst createCb(retFutureSym, iteratorNameSym, + newStrLitNode(prc[0].getName)) + outerProcBody.add procCb - # -> return retFuture - outerProcBody.add newNimNode(nnkReturnStmt, prc[6][prc[6].len-1]).add(retFutureSym) + # -> return retFuture + outerProcBody.add newNimNode(nnkReturnStmt, prc[6][prc[6].len-1]).add(retFutureSym) result = prc @@ -2085,14 +2089,13 @@ proc asyncSingleProc(prc: NimNode): NimNode {.compileTime.} = if returnType.kind == nnkEmpty: # Add Future[void] result[3][0] = parseExpr("Future[void]") - - result[6] = outerProcBody - + if procBody.kind != nnkEmpty: + result[6] = outerProcBody #echo(treeRepr(result)) #if prc[0].getName == "testInfix": # echo(toStrLit(result)) -macro async*(prc: stmt): stmt {.immediate.} = +macro async*(prc: untyped): untyped = ## Macro which processes async procedures into the appropriate ## iterators and yield statements. if prc.kind == nnkStmtList: @@ -2101,6 +2104,8 @@ macro async*(prc: stmt): stmt {.immediate.} = result.add asyncSingleProc(oneProc) else: result = asyncSingleProc(prc) + when defined(nimDumpAsync): + echo repr result proc recvLine*(socket: AsyncFD): Future[string] {.async.} = ## Reads a line of data from ``socket``. Returned future will complete once From 9a2b98cd8bb7b4220b1ee959ce2af730f4770cc6 Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Sat, 3 Sep 2016 21:21:06 +1000 Subject: [PATCH 086/292] Add a test case for issue #4675. --- tests/overload/importA.nim | 5 +++++ tests/overload/importB.nim | 15 +++++++++++++++ tests/overload/timport.nim | 7 +++++++ 3 files changed, 27 insertions(+) create mode 100644 tests/overload/importA.nim create mode 100644 tests/overload/importB.nim create mode 100644 tests/overload/timport.nim diff --git a/tests/overload/importA.nim b/tests/overload/importA.nim new file mode 100644 index 000000000..f045d11b4 --- /dev/null +++ b/tests/overload/importA.nim @@ -0,0 +1,5 @@ +type + Field* = object + elemSize*: int + +template `+`*(x: untyped, y: Field): untyped = x diff --git a/tests/overload/importB.nim b/tests/overload/importB.nim new file mode 100644 index 000000000..2dc3adf7a --- /dev/null +++ b/tests/overload/importB.nim @@ -0,0 +1,15 @@ +type + Foo*[T] = object + v*: T + +template `+`*(x: Foo, y: Foo): untyped = x + +template newvar*(r: untyped): untyped {.dirty.} = + var r: float + +template t1*(x: Foo): untyped = + newvar(y1) + x +template t2*(x: Foo): untyped = + newvar(y2) + x diff --git a/tests/overload/timport.nim b/tests/overload/timport.nim new file mode 100644 index 000000000..8ea65e54d --- /dev/null +++ b/tests/overload/timport.nim @@ -0,0 +1,7 @@ +# issue 4675 +import importA # comment this out to make it work +import importB + +var x: Foo[float] +var y: Foo[float] +let r = t1(x) + t2(y) From 3d78b5c14c2d0aaf631e752f5098db811b21fb30 Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sat, 3 Sep 2016 18:21:00 +0200 Subject: [PATCH 087/292] Finished article about Nim survey. --- web/assets/news/images/survey/10_needs.png | Bin 0 -> 39707 bytes web/assets/news/images/survey/book.png | Bin 0 -> 73632 bytes .../news/images/survey/book_opinion.png | Bin 0 -> 60929 bytes web/assets/news/images/survey/breakage.png | Bin 0 -> 42872 bytes .../survey/difficulty_fixing_breakage.png | Bin 0 -> 31324 bytes web/assets/news/images/survey/domains.png | Bin 0 -> 59065 bytes web/assets/news/images/survey/ex_nim.png | Bin 0 -> 45423 bytes web/assets/news/images/survey/languages.png | Bin 0 -> 84839 bytes .../news/images/survey/learning_resources.png | Bin 0 -> 39711 bytes web/assets/news/images/survey/nim_appeal.png | Bin 0 -> 54043 bytes .../news/images/survey/nim_displeasing.png | Bin 0 -> 52584 bytes web/assets/news/images/survey/nim_domains.png | Bin 0 -> 58405 bytes .../news/images/survey/nimble_opinion.png | Bin 0 -> 41325 bytes web/assets/news/images/survey/non_user.png | Bin 0 -> 45695 bytes web/assets/style.css | 9 + web/news/nim_community_survey_results.rst | 379 ++++++++++++++++++ 16 files changed, 388 insertions(+) create mode 100644 web/assets/news/images/survey/10_needs.png create mode 100644 web/assets/news/images/survey/book.png create mode 100644 web/assets/news/images/survey/book_opinion.png create mode 100644 web/assets/news/images/survey/breakage.png create mode 100644 web/assets/news/images/survey/difficulty_fixing_breakage.png create mode 100644 web/assets/news/images/survey/domains.png create mode 100644 web/assets/news/images/survey/ex_nim.png create mode 100644 web/assets/news/images/survey/languages.png create mode 100644 web/assets/news/images/survey/learning_resources.png create mode 100644 web/assets/news/images/survey/nim_appeal.png create mode 100644 web/assets/news/images/survey/nim_displeasing.png create mode 100644 web/assets/news/images/survey/nim_domains.png create mode 100644 web/assets/news/images/survey/nimble_opinion.png create mode 100644 web/assets/news/images/survey/non_user.png diff --git a/web/assets/news/images/survey/10_needs.png b/web/assets/news/images/survey/10_needs.png new file mode 100644 index 0000000000000000000000000000000000000000..67d56855234668751a190578619b9cfb79fc7d8e GIT binary patch literal 39707 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 JIZw1a{s&&!Ub6rI literal 0 HcmV?d00001 diff --git a/web/assets/news/images/survey/book_opinion.png b/web/assets/news/images/survey/book_opinion.png new file mode 100644 index 0000000000000000000000000000000000000000..9675388fa898daaab3904fd3077821e2c7da9466 GIT binary patch literal 60929 zcmdqH1y>!-vM>z665QS0-8HzodvJFrY)Ehk9-NK4ySoMt?yehm+1Sf-&iU@WYu)<` zzF9MCdaApsy1Tk+y1FVtMM)Y79v>b80s=`^MnVk&0$KtB0uuZg_5*?pNc#x^frw`# zF0LXgE>5cA>SSqSZvg=z6Op71r=vcCou#k#`3n;&Bwa3#sBh8+3?%3q1tp|d1R1Kv z>7TqnI~=r%Blz$@J4ka?G*w2%z)mN|6512f-q6tu${$tFqYsl06F?EGNxqwGH!DX= z2$cq_FVJZv=n%Ru1}5e?C>+9M@v`Vp=zk$Gw-6C^P6>Z{Nl4KCU|)GR+%SX-FX%R< zi@2M*dZ!;HbVMeAp!~FBu7oUrutNc{m2Ur&6$e6$XO3We1WV>pKU^~;jub+o4!U@> zCK;M$tfp~}ntukzR0QIW2DW@E{Et9NVUAcJ{4VWh(xwA9Z@+LavD029GZ#{9aX~T$ zJMMuT@>*ph3EJb6=)~ZcjPAb~7zh?|f1>QG^AD@uNSfEXHcjnWv#2Su8dOkT44v%-$nVo$=z->!`DJjQGAojv7iHk~C-#b_DDs|IW zvBU^6I7a=xUnB`P;#ceKsN{D<3x~WoWjqAA>-@w1g?_ zpki{VH?yNeb#tuM`RB;-4M44sD-o83j)6hw>=L+iE_$7aG1=`e#JHyf@6e`7e%9mwCkl-LH7Ky zo`X*a5%!hB8nU=Y*BQ+{$ZiYSfS_{=1{dO@2Q`qCGC1@v8j=JKn;0Xi{s7+9*Ozz| zN_5$;32_?1vEgwrf7lD4bz^^1w8!D^Y472>!t=%6k~YV|$&g&*KLwl8Vrfb?s+zfz zAOG^rC$r|{hf)bC{5SeNdJOtxPv@+>w=^X>o&-i7##+Xg0rwrh9r_(^ zQ=!_VC2>CqLdtj>O~R3}x= z)i(Z&jh&3O|4~jl9ASxPNfe99QnA8~8X4Dj{@RqGLmQ@+7x1EtO&6^dH4)kV9uxF%oI?*m2;ld?7>$RgaGs?AcJq;AcdvJ$-eUqX#L)t~% z<=>sb!>EOaA$hwduMl?&6$e-hL4AT!impyZnKkqkgm>k zXzjQtn7=Gy_i9FV zak<1ztXMgv>Lhn;cD>}g+5?|@G-zVnJeh4Z4a!%~SJaoh)6mz@R~$?YW&^{3@4yd; zw6K$~bg%?SD~Pa&9!SNw%&Zk$9S)RMd-lIA80++B&y)3e9+mfRjp04SN}F^f3vc% zmh7N!@_jzW66agPfDB9yxJc8FH(dTgvGM+g)abx032`=*u?**|DeC& z8~q#G+y2`F)Gd@6lr0qOC!$Y>a80mifntFRFzcTekS*aBp-~h((>t79zklYUq%RQM zGb!;YVQuh%=eM~2jii1aiWhR#kKZrq?fe*e`5lcKZ5gdwkxD5#RgdjXwm@+&@J|e_ z?_5O*K=mRIkhdtY8Nn8fHrOyoKco~}837?GV%0W3r6>2-rfdPnpV z;g-5iCr)t)Stg~FNEU(ZSSwj0nidD>e49U423{3q`!*LU^%AFL8BJa8jv@w30n;bZxM zu9^l7hD3c&fo3i>lG9DEy?yv}5_kvWlrqR<$2`Yup!RrF+>>n^g&7$v$&=j9 zv|0PfxL1F=amH~!ImtMRZxBbWLS9Z@xZ1S3?XrGi%0dLCT1j`kamZ!jzHy-OrEzi5 zr>fkjx;BZLQ98?C`qb+73$? z>rTJ1scH@EPhhpWe`d6L;%R+ByL@Fs<8(M-__H0KKAJ(^3&ZR1%)gGtQ+b$WvU~1y zeoepbK_07H&VWdF-Dp=syxu zp{u!Z;tpXzltm&o{<=HbS8Erj8P;l(9JWf;wcmf|-0ZJwn=G3T^1F3kwdV5{)m#kD z9@8;?V}#IzDj#GM+G91`XUhrQl{jdv0%xy^tDBS^F8DEA57w4{)E5hM2qt8nfVNDk3B(-=V^0pJ9UTq>e??=nVtB4cRP(W zc0!A0Rhu1buc43BhX?igY0XCKlkGz8RwIUe>pS1&9^@|U)~jFoPh)*+^B*6fy5WE* z`NSJO1OB%=E|a@cogvEB%5vGq!j(Rj&lQC%In~ck4Tqg9&@7?gs5gx_w-fo<6zR8X zaJd_)f6hbF<^1J|rW5CeMrUKdDmN~h_q*Xjd+x&^38%0|fcx9h72WylY%X86Z1z}J zD!}Fq|N8FSdEv6=2bH;O>?d4%YdLs`>T-x2s-AkNj$u_y^9Pnv(mH{B%%AVU7G9jC zJ&E#3I1p^|5T8S=exKFgi7JG2?mZHn!Ketd*K(8d(Rnu2>1cRIk@?{g`{yG;l;Zth z>D%7Ub?EOmzW-X+3}HQyy#7on7Hstbv_zkqmxUA=?S_Co#` z|M(Ijw{~}T=4WB?^73N#;$U`iwPIo8SQS%>6 zL6(0;@IOZM@9Fv%^kcq+;RRX#Ywm^NMcr$fKEy$2BcZJE@&5FWY(B2nkB9a@?~n3N z;zvlXIS7ca5V8`Y8s3nnohW{U^F9}^arc8ol|*i}7~*FdZ@h{YQ1NTrPSCPFoIEnn z>UfzV+zm+souzw4JgLpK7R8>&3yzcuz82>W+4O3*7-+oO{gzEghE zk<$|{4>T?qa;6$^pt@>We&A~t;5gho9k22%TnBD~DK5rOpC0_C(l|csYv!Rr@)pWA z)F)Di|Kmm@cgDjcM=Ns(hyOonN#iIXLO$bv`uqdpf8AgAK7S=cZ>10G`9BG(gy$gr zA6O8dC1M~j$>YmiKO_EM3_sYd{BK?#kpEw>Q*jRYGd@6j2RzS93?nW&oarbpD=RVe z61XF(5J%ce>lq(ly#r?CBr))9Kl$jX*C!s+FYfW-P{MsO`K&PA1A{U2u;Z6K~JmQ@g zuP(Stnh&-e`OGjEd$YUlKA23+Q}NDG`}K4zm&6^kor4N(Nj+ra7immXQJQl+TBxyr zC6*p%!#rP~bc2_jo`>hZ5P=g?fw6C81f!`@q1;vWMOP0R3KEsp>r(`3cCC(hAYV%W zQf+OIPEe($qc>mGcLM@>1-PO>h-LJ@CuPDCh87uceL-J&Kbb|qmTr=E9Uk^cHiV`V zMA-o3988^O@HuY=y<^jr0I{70i9r$ctuJ%Q;Z{nm=Ke&-C7QSm_lKWcTL*#ix7^-S zR9E&OLi+vUQS-cfx#VJc)r9%FwF$8?;|reCsR6ONDJPMVh_G378dkogqT4}D2XQK9 z)$kpb-g*yTd)DcNI2&TMB-vvxt(RWWS-zJ&VBnEchB<`Z~;dbxVes#=F@=1O%=0oeohRma|* zjUG67J+AEsxE@Y)7AaKes$-PkpKa@l+_yerl2DRQERxI$&Du&qkyme-nUL(>tb~sb z{HMb@ZCpPSRzIh*py-cDT{$Ld8!(*KdoWLLsyYd_1AW4u*5h#L2Ol8)on45azmn2? zf>8~>C0HQSjKKBH%%rDXl~D;dmq*-2kS6WMfCQNCBHHUc@9IW;D@Y6xE1)qdf{#bn zp!{`Lk{nffuaZGaOc6gKQIRXGy7@QGdh22Z95apq1d&aUN1!7KEjON3I0lD9FI;%F zixtG3-mIcX6|9g`P-BwQmGgF6o$RStltTQBY1D1c$nA0$1`2-?S>Ah zm1Y&w$S+5-u{TpeD`KQ(WGN}6^w;o6L}Py?V^0a6A0t9SIj*s%kkH(t`HV^av>mQ- zE&88+(@KQbWk3^v9%&`e1w|`UQpV>zsYmxEXH*mbK?|y`@ODkE@h4LJ%=qPzt!$02 zDgaZ;-JU=!+R=KBVJefS7LPGnq*woDdWpwLX2R!}`ydMqF4T}O;a|ER81p3nR?x}g z=2!Mavss#rcn28Z&U0r6>nN&FsUh^MM;+4=k>rx3EF2}=dnS#od)^dWkd0zPQymPd zJ2{MH^xlp5k5&6H>w2Py+RxUKVtkrJ7mnuAz$`ZnVigtR{7pwRb@w{3ZQJIuTIlzT z4evlttxHH@7@9akL#z(oKcq9zL#0=BOndi)r!qb!nm^i$>3dphIX!38^)YwbHsfc@uno0yv%XLYvkL`D%1u$>lXiHG^c}FHegMNU ziN~2{)-XqDXaX9}=F_sEAOsRLy!^j~ouAU_;GBT$h>`_M0Qwe~m(K{kaXXuLA0v}J zVU`;wb_RB?FE1i+!P*eRGZ!wr`Sb|&!N=PI?2Rs6B?O>e{ih00=@98EiE_H>5G@Pz zlA-%zZHh~xjEByXh!IX1GgnUhhM?7<+?VH@Wyg@DeXL6qc!ZMukL72XQ z365SPD^rm^Whm$>^^pgVbT9GWm0h&tHI>9c8wx_TTn)t_NbQZXCQ*E$mUSWHQ_-^M zlQRL@c?&;meg~yavLJZEW3LN;98DueCJsRL=PwPOC7Tx^YT@1nx1I@`{;V2Q`wS|O ztEyd*sp|ZW-Gz&qN~Nvw9o#j74^ob=zx7}81XFp}WiswtJd5@M-mk}Wnq=;bhO}w} z%{YSs%|hEwstTw_#SBIh^1=*Ks<{E3BUIq4wRPiU}X-B`m2+s@s7v8&0Fzn=7)?4_s<@ z;3PS{G$qTTA<)`a5|3K&3;8kw-+YM@N9gt4!FQ!}{iLb{ukqp!@tESDCXthz!%y&$_@|WjZHH9m!brBE= zZiE~q$3ht$kg9`KfnQ!zj;P|_Pw>wxpzyzCz!8CNdn98`Y)gw+xF`sU=F)RrOK#2H zZcnM6a$e%Mbz066Bt92VJd=Ky!2qAdpDTO12IQ>~`^6&P-l;B*JXg9P6Yu?$RfH+- ze4O$&#_0y8%ii;ibj4p#r9(k*CsKxnpJbBFA<66%43eE+_xteE?X@W7w_$sl29?B*pi-NYg# zoJXWPVWApF;Z^v?-S-fyLHc;-rW!S^cso)0DUEbgMfN$yHDJmDBin~KBSKRRPo&~S zWSJ`txi0a!4S%yX|1&3>b3)rB6^HzA=|RM)qf;iEh`9RCw8=}iZULg~Y{(bEYMB&1 z0GcrxC24czw?Tu5Pw>0mRDV>9vneQ~@_3_MCpq{e*~d75;q$hjOYC^j?ABUh3a5Ju zQ-5k{bfQQK0VWp7(9nTzKX?l43BU4%j8Mg3XumIKb?blce_Xaa zbem|*ox!kaz81bX7+$-t=j(CvW{)26r`Yr-VM#H21rEg^)m3cNmdyUjLY~+m&|ZqK zS&&-wHI0BRJS$km61Z%5noTD@QRdXJu>HQ_1PpS?hi*a;uhj}lp=nOZYSEe}L^xx0 zr?p&N7gvleA)6K%U>`x$xgU&Mcup$|os_7Uw~qosuKqd#)rbw~G3)c@pSusIbs#wl z3YUyBaj3-TV@xu4nY|uhcQ3S|3nVeZn%3o}o+ZHrN@1|?Ih`phC?kg?R7N&y@~Csx z{n-wD5DjoArb0bC z8(hz!)M3c2qnYC#_8urHOe_Fn;8$a4x7YID?y8%GJp_8I^#)3k58#p^zSF51GvG2^&`LQVk;LdDuVm$U6jwK%> z+-|xlg`2D?M`1D?)+}qynJPI%%lAKV7@V=i(g{i$Ar$ilo-3JA5A9dqTUjP=({@{b z{gHk>acQ-TEPvs~QFiAA>Ch<3S!YUwKr|yXJ0#h({~2TE(DnKTG}GnE9q|X4;&hY` z$P~9lebV$uCxTM0xf2Z)h*RU2Ys5JJ!%8-fh5o`#ud-mU^GH=zj3q_PhxlxADbF9j zHIfa6P;LDK`ZH|bV$`0gDS^!S^>fY$-;OPW=xSysV){h?2*BUG#dAg#M4*?9ckHp371IxJoq z*{t<~DP-h4As5pk_7#L#)VPixoX2p3sy3mwc}7-4oKVLtv-*;r*fwrs4Ugv7h{P_k zku;>5T1uq|R74KV#`M`Qv7!oN;&Pd=$1&<)eei*##$3od#zm_%|0YB=MAQ+<1n2+oa+;j*+=YOif$t|0H=Qlbu8(OpPYRqNWAs~PS$z5k7N|d z-F)KNCU%*md(mzKMUhVi&^DJDBz8KDUjFi*^KGPS+E1l#M3_6WXWW6mFW3 zJt(5VxT>ukz6KocBfMMUGoj-3q1vRlAZ zLyaR)68W@KHa1-&Xau0DWzO)APbJ`S2b`P>OW&N5Wmtl(FUUq%#we{!Qftee zuyR}JtJez*B;dpx`B{dRo{th>*0=teOz_VA)itXquAJHCrOius{Q%uqQ=J%A$WYqv zdwlAUdmMQu(Sgw4T9xnqhgF*Lm@vHnI|`}fA_0qnSF6?Is1C16grao+8{$)HsXH zBc`mnYfxV;5m|e6P4?L{^17bl^@$}%uF|56{Qj_=^H$EIzQwcIOs^oE(kCYd9d ze`-&h{4^oWd7JYc!tpFT==XA+P8sQWbk{lcj1~rcE-(?+sIMu}p;o(&qudQZ1A@%2 zM8D#0HF#K)-oIsAWl$FW)i@jaqGxnhN!0LNfaMuYskzO*PIG!|ucQ@ITAn6Dz0=_a zIu=&Xc1AW8z)ujNVu-6C{6JRyP+(-Fmh4CP>ju3{r~_J#g|)fgW-n5K`9iVpJ`lIKN+4tW8hr0z z*{;G~Vw)2K@URc;4lP>ZGsa-)o)bws7Z9>{JbWQs8aa83mison%3oU8Ms5=++#`=W zVF6uAcm^==z8{-MiM)H)cC<^V(Nq=LH10b49-7UhT{e}Ro$jZGV^& z$jP@te#f(B>~W=IQtijlc!g{Tm&B@e&&lPNP}Q~V4^rcBO8=X5SM&wX!t)S=?w$EC z{a#M^3*X6#Y7(krV z4zf0D^rjDf8^5XB%LnbV&$s)G_`~8^6jyq5bOgK}*%+Y<4Eor}TL!vjXXhkJw|m15 zW;2d54$Z~bC5)!a8TIj2Q9w99Huqt;{R#V@6br-62K1BA@9S%E98Z!jEbc`{>e&y#lkduKqURNHenc zCpn`-!hGI(YBjWhhylRvgn~nBF?5rbd_>mdER9-e z-RcF;xjbwOORM6AyqZf%Q_zso1;;8qisNz9S^SD{nDN}!gnf0>NElf_TWX%rpmLql z7o@YtuL2IOXK@(xPeeuU>g48vX*ofH;efC3`A(p!hm*!yH2kff)(5d8;=vbNZ`Rq< zBre$_b(@~uf)S*)yX%O^_#CtL*&)9A*XrS^@b4Nv!z~?2=_NN6b56PX_i{v)pG^S% zD}0{^jqGb!&P1f-{4FzAyqw7HuC`|bWTvs*tm$DSY$rH5eP#&Ui#br=gzg>MB+odW zc)n*Kj`-_7i>hxAk6AuS#u^>cL13KPStXv@h25qQ$uGv(zsk3z&lvwlr!%p>F{+f* zCQVO)g=m=InH?uOD($^o7ttmC{hPeb4je4z9V4B-`?Iyw_aWG-R$SNNX{9d@F`Q0` zuP$(F!&qCVwH9mx%Y02Ogwu0pqqP(Ein;I%0+P*@CHG;>L$jBMAFeO9dOMQFClslOx*W7jRW+vK`er1RjFq}f)A2~|W zk%Mci+|*EsN2;unCVu;srei6cdeO|=Qc3}?jCOhI)aHd-Er_!N(i9aD1hgwJ z$C@~+!`Q5+6=8h7#*?Mn`0^*f&EoeHroW_2;GS4|%&PUDrla3stE=hC%yz_}b9dt` z*UIgG_*AVQvDqx_=1~dpAu#&{_27!mD+l)MIA_N59qDLm?f6I?p_!`;$5Rs{jSG78 z$ygEN6N-nmMS&K#*u%R5auXFa$wjOpwVQ2uQERmfhqdBs1GC8RNDF7|D$_H1(kR1% zZaED1gkmQZj2607dgFpe!;mW#GaQOerEC$i5;Z?pH@$xsKRadKi}@ew3~YS`pNJEY zs)9KFk<=JWVFTXIZnFT!Q#*=TE6O6KL-~c$&I%=d*nqLuy2W~3)cJ_7cP ztz&<|Kpp6mc?6RRpTk1&p-p zfvB+P_~ptOkg?yqd&3DP#cN>aVffT;+>;E`IMC@HxCaIRlV1XUnYVU*y@E5vi~Zg@MHRYc z!6g_f^AJMOfymRSL34AnA|Doeuq2X`v5>RxQxvSFG_>}j_H>UJLz&VWZoyf4nAfou z*nb=2Jtpm)7Jlh<_*neyM4QEdIq_sFIOTnykcw#blw**=$`)TxuMdpU6zTu3vMKRTZg*Qeyq#nNm)$FHO zbfrC@NFcyPB6D_F-GA4ZMhv`qR4mcaf=;_Jn?uKSwrg@zm{U2Wo^UVph02Y;X>#5F z9c)SUy0!Z}T%?m?y6=0W7`GfC^H)VrC7S-i*M|0<_#w1HWs<7US}Hn z{3yLr=ZhXjCq;7WPeGqUtH|jtAJ~Omg$9eTQ#C=!h&bjT>%_@{O@{gk)LH@b?B6XT z8L}mEp`s^ibX+)cbXevA2}Xb$Cn0RS!^i!4iu`d>8a&N|GBp~QVWaF>;zQ&yLP>i0 z@~0unv>NS2q1=NBP#JwhHM&|jCAzpndT2-PVz9j+#H}p1-9RJHVy?gvs#E{JmXR5J zR$GF+UhBZs*k(Ji<&QKOL|czChUx^63vhuR!*y1@>*@zm=^lJO;NkZTSsZdR-uQ>^kMplxh@(~B6H85s_pCw_=`;rk(3Tdto& z*PBSQy^?^(^2{K$x&y2j>Z8opg;>shAX{>CY-=2uc?c>p9V^1+tU&RQ9+%&U8Gn>s0S|5Jlejk_1h+Y2S<^08rL>caLu#2{JPcyE6j@Vo39@3;7)pbz#KP}<}{yi z=QG4Oun=f~UZ?v0oDLxO|NW8yT0Q>NBzFPDQ5d)Gl;t*KbTY8Q(+Fa7+8J+`0Q>KK z@jS`NGmoRG6!kKq2k1t`S@`fl@`*(82YZ=aWAZeOw9^JvSUY3Muty8$wc~IuI!G&qsj6lMJB!&GcSgF3E|-Fv%5d)+R9*yRJn@N zLkUO`ar|sUwmI}0c=+wHo#c>JGYHU7gGbB9Xk^S_g9X^{RL+&>+MsaYxzMvcI_NM1 zy_j7x(LtN71xfORG@GD?hlAW)vU^&g9bXq>f|-fG4j8aw(3|X_8O84o$(Z18p#a8U z-_IZ|7!z2&n9~if`yjr0rW*)pn-Zhr>-eS63AP&re=8kJ%3-sIMcL{N3IkV77+x&);E!sUTL5?LE$v)Lm8a>#5cP zKP!E!-fg6=<&O1+KV{5TNQ=yvXip&g3KdPWJ>Mdhkjfp|uc@(<;~T?aCeN7OGZ8H*9frKqoDC}z7(fCRQ|I!eX5=uutwn}~PWd+D2vb@iA319ae=yKdg z)C-Qr_zJ$RU5v^L+2(1!35J1%s5HvWBU1L>CFnEtGWl|u8*WY5Cs^SnU{ccw}mUBR)!F}b3SbZ3G1xuI9;=-TR*itQu38B2w4 z%QaT^qvN)Yzyhf}SQk0ua}YQ66eEkkqI-Ey+%P)?*3bTsu|g5uGTy2`E21s;_)7j< zAcLI}x}`~XJ47RT6GLXu09OiB4TtEV^x0|!f~IT^%+&Fmg1`+SxrFz`iYQ|QB1gC^ z)^`PU|Kl;-{ze2WQD&Dp%)TrTz%TVnsf@l;;=On8>79FD{o>3$$f?hjHJKdWU%%ny z@j=vT?%Z5$=uF0mCO5lq#Z8q2;Rv*{8V|*LM?@VnUB!4tp}=oDIg{2k9yz;6!w#-v zf29%=Q>G|@snUSoXZQplYq`HE8+~0 zOWQz14Ngg?Dwiup_sJ4U_=8|WQ+TwlE6#c;&y2HLu7!zXC}Ct<_fw?Yjd6iAXpc$J zZUNAr&DMeV-Lc`;0xV%acb`%QiQo})1$}IqS0a71gQj zK2RdcyXSc$urP9Wzl8W-I=-m3K%*yYKd%F6C6#SB81t8Xc)Ie-0D<%B*J$ZV+kj-% z-c&y2n??H*KHiSp(=jko4>BJr-OdhHxREqS?dVKMby!sa4NzhnCw7oD%iKdY4U zQ@z`}Lg`}sdv);|wSmV%M_!UGx3bJG_8@3u4)7!F*v)#vuZ@_qskm?VzWg2Q7j?Hm zViIOHtPdfRgks&s_WrG-tweZdl#5p7+}M9-8=EN_Awwg~8W?t4E$JonkP=C_jPJ(n zSHY>G!52t~iw@}_1!AtWfxA+R|IyWZ50?l@7Y<%JWEqsdLW?nCSMiUY#_`Lk=!PEy6B2l^M) zUpL#stHmsNNzKeQ>l=Uy;k_J-fDcq0Yn~2JD&L>R*Lmjl!?ssK(mnrU&>!6X+n{?C z7E`=vJjJA8GI70)h50@_14`eWl~e>~Hhz;o zWrMxmOk&0Dk%?VcR+i|An`6vsQ$Fgor}S@3a({Wty+YYj^CddB5?8s=a4j2M^(y#y z1B+X~Dsz=A8^J-(Ng?~6vlu6`I!VUtIF?pTa9WhD`ix;y+6+?DS;;wK!2&HtXH2@+ zit)lrcHdB7lVbavt+djR*RVoJ+w5yk(21X)JF-NFgZ@yk zVgSNVY;wF~(TUND?q3d4(e{~mQ934QCubTd7*7Ql%p!_Xv=SOo2qaCm zLQmO>$etx2I)Gf$DB2iDuQ#zy-y;soR*LzOJ0GZf0=&vMe*AI8DWw zzSrnxPUk?w;K*=eYfCfcppz9A3yBT-=BO6tJ^Xbb9HEcX6^F83r*mZoBG-dLr+ddf zjU1ZAAj0!&jpERtxgjkN?C!>ruHZXSNLX`aRf_9}OlCRu(-RrB^e`g##~T{BsxFIn zu&98g_Cz!3aah_P_R}>X-ohCRgE45{T>cT>MBdrPE35S}XKc2u((xlrbY-<^QF(b! zQ+b3asX&aut!Z_maQH`-k15;yopKVtbj?M}P?h&JG=;d*6i@fwx{|G&AGjA)MG zwe@Zu*T*_j{4Q%3?2ghQ_z2K3i3TkjqN%*T&kc8Jp&^cyvC5Pzb`LTS(?yT#ZsLW= zxBFU1Y)#zO$=PW!R0-H@W3wMBEgNcb6wFlSPT z^ck+2;d|5+P-@4qW8)9Dey;qQ3nOfW73YFq9TOS#r7u)W6P{@HqhftVk>4iTFr~HZ zVH#}mJCk}s#w753)Z(rv#g4#S>tD%rKat8#Ix(!=9| z4HJ?gib`~+T*Od2sE$by9%%zR#`Cawn-27y#^4@k;Hj*$69LVo1;)}EAS?#@Wy`3B zZ+56Wod443WUQ2KavgW!V{bggJFaR^NPp{-|I65J^gdt_?WW7nA=8wfW>VIE4eOd% z6+ON7)ocr3DKBS`ame2#R<#=kioOsjcI%Gq4jDtSy8=r>0qamhQUX`w6w>%Znd;|?pR~m zT4pX$P#Lqxkm)?zozv9LC3RC~d}`^Afb!Q;y5SI<{Ui0|!YyIKjU4A(c$xWX-v?jV z=l4feRMRTx+jk&JGaf$glG5Q!q21o@FY#gb76s${;*YdFRkXbH`^Jl+yW}1WD4Nm} zgF0u8S=YGi^43M$)R%Be>y~yPc!((^p80IAZcfG`4fnjLDo19%9dvYle7oct3Qpaw z`CYVWqDV33(34d>Ju5x?@?we(y5r>VOgDjbyJ^a&oJPfMzjF9EE!I#$Ab6q^^lJ;XOvV zKz6ch2O@Cj8Acb6I{0q8)|@-b(R^~?znZv819X1cpV?&6Boz6*y>T3tXgooY@{w4v zk+#9os^rp1+AH1Gje9?z|4cSR#B)<3f_BTxTFJCB-ZgZ@6EyR2uHk;;Gu;fEtj&{g zcwe0gPa_*@heLn+kFOjovRjw|K3DCSW4%cf$g)nn@DOeiG48Kr3H4Vw;F{CgzcWkE zthh`F!XFN?la3h3xwo&6PTKo~_X<1KCx^)=gFPIAhj8>7|KTeQB4P~3t%C*Gv(HQ_ zzTLe-+LPCIZRqVQ;vIHw(1R6Jbq)y=RDw)-!jZZ)llgRH%^L^71C-8SSlIJm5 z-v!*P0K_LRZkD*FI!z{`Ip^)kozBUb4lLR&&v?hOF-q|3yMX$0Cjr-UNqw)SM!8(O(Y7s$KYPS>>gK6%ul^zhXD zH#|dyk-=M?hx~XQl?(j_p?*8!{m|OAui&f}uiEuSZimp#4r62oXVggvXUaGw-Z2!e zQ((W-<0o2uSgjq%Qyu~=qU5G=DM1}rheYkMp8ENj$3z(On?j{^9=H^W@t_6eudk4} z)RkMjMY??R*I<4-GHQ(1m2b3MPl#IKpSvl*36xelw&`sdY5G|7|Bt=5jEb^rA4g#X zr5Re9p&Kb_sXE4z}$OZ zU3>5A7Mn0QGUW5$fp#csK5%E|}CC z@6Ubcp#ozb3_;PfNnTDUqwaqzCUhgyKwWPdH;q#{G+}YU+0oDTGBok=OTzA@D0+#o z`!D6aOTwZp`7&prvYWJ>TI-`A86}j z=j5~^DaZ**N!j07Hwdun?Ose|p~l%SItsf6g&eckFy6+o3E{Kjj~iDvP!U!Re8=zm zCZ4&KR}{E;IXskS^+WMJ3Oj>Kru~i!R^C^cUd~-s=heXXxFwT!nL!Dfc^~=@e)I|R z$Oq8%NWZxII3Q8rck}p#G^=+K$7j`Dr2ULJ=DeE&{ff;hd6U=6>Paf>#ZJ@ypH1Si z46X8${i2{oBAK_c{CqueyA*!mtwJ>;nc?|R8rPygJj#3goS8?LZvO14l3q8*ue;~O z{2uefXIvEoIKFYAF+L;khPU6>g?V{ioUUi9toG`8|F)l1>%}oFg&gcC&fN}TvM!1% zv$e0fXOk_s%+`g<&+bM>L{JOqT{)#-eo!d?)$mn})=`XYHy<)i1nK#a=9hO$uqjuT zAUnHfl-B0dR~k?$A`4-vk*|-%&hX^U)GcG z5a03GZMarD-VH6w_cHl(`C2i-h}g6s$2tn_k~-z0p%Ez7Fpyd4Sj_3GI3Y=dLu~Damy6y^Gy{3eYJZXp=N$wv=^^gGd zxw#v`s6ZME+kip(nF3{R8H?e;2V8|m!v*|idEPzi3jFzo!>*&^JUX+C;H3FeIjrC2 z?D7PL<}1l;$M2q^Z?PFN9lpjUtJ4Oz@|+X|C~yjvGbj4#LaKkNtj1qmc&spcV3xooQN?fSCP- zo)5vg$;E#RRx%$4@9hr6@`-8XzrM04CLH@ICh06?J@_@$|KTPD{ciK%h4bs%*iU); znu45XtC31H`?e$HdguH#%el?_gkxud_~S>$o&rj;xU}*v4_1N`2K1Ug?CY6CXHE-7 z_YINsU$oUzgUXF*YK%3Tmeh**B{}{S%=uS#sopI|Oq?C(a*5iqtPU8FiEJ_;hc*~N zVhg*ek|XwC&FU2EzmYnv0JA3w;Z~oq)A829r|0T9fBcfUno8X?qcH!Tuv!GPIVqm+t$u_8dMzpCq-Y@rT5dO=OjtPO4yV32}}54|*k%8|76i z#^sb{qwEn|&A61xvHA5?zp%D8=g-Nbmfj=XO(9;G^+61m{LGxEdw^WO!nK96|!i81p>5_*w;8cc@qWHQZ$#z5BYsu%|!OB+~9e5f3SO&w4& z;y;JRnFfV?u+*&IP?xkWE6y3Z^%_cfIK2q4nR3ARNhF@MJT^EMn&Z3GK+0DXYznPI z?-e3nx=i!p@ZPfhyBS|L#+AVt7ScLB*UYSWsJ-!9ORpSv+L4K{(m(1A8M5hGNx`~r zV%e~v5c*qU*M-&#pTz3fz6OK)dFhEW$NoXSIR){tkWC3SpK4LYPkwn|gV}55$WEZr z;`GKvL`%mUg;*d>47wL_zxpb)YZpgL*m3Gd~0yx+P=4%d~ds4hQ$1GjgNZf8fk z6$OWa2Nk1EqLZe|ZNKE-Yny2YnEXlA6kJAlEvNOCL?0DChNtF~{fGRZ+TyM}_UH3W zihVe?vw$}=iy@~4^N+~UU^AXP*mCSIZ_p(3LkhMtpq}CQ z7M;`t$0UAs10JsIP>ki|QV-Jk|DlG7Koy7WeD@zqSt3 z89i94EGhrMl=90@Bz`aODsl80;3JMTdZ9KocknCKF&cTD8n1Q!$&JB3wfZ$O)%EIS z`s-yupN>{_*3A%ko)5XZ<(jgFnqM5LgN}YIKqWERzE2Gvcn$^_w0u%(01uqZ6Kbp! zLoMlS2ME?r5@dz(mlDr;MpZu>YU{fs`+OkR5hA=DTKJNoG6@`^7!!vsVf=#g^MVKbZf>d^0Uc@z0zbUCrUf({JsMV;S77Gw!uu4H8I= zqfOM{SLPiRgRI|L@A#dX+vgRwmAQEiWg368c6C=$%Okgztt!SyAz3zE{>YdHcgDrd zE~>1|31xEcfIMo~IG~pmX&l*T;a+em|XL{VyEHHOz;vu^QNC1H1#ctPdbzO6IbEs&CXq6%TD%j@zSdL z_oH{(ove?=l+5AMR#Q16BV)4l>riIeeU7UD9Pd`rlk{@9wfZkE0jVz#%_TXgPS7&8 zw!p$n4qgSxK^U(2FZ)3AR-%@1lL?`=aP6BnQGKOL*K=oIA#-C;eN^k_sm0PH*Ss8W z?mfqMtiC6W){#*P(JzPcZg~>p`ZyO3vl8$BnA7s9;XT;cnaP6Oo4ACz<#p-$%w6wB zC5DwxmEx=Aq33J^O^I&L!%{(+X~=RXiJi|{t*X6wNuH%A0vjT$1BovQ zUlAHb!tOf@z{zB0I@7X^J)wf)x-;sND_dzQ8vcB9@641iFuelckm9NQv4QoJuSS`^ z?I2fZ-O}Nxs3XW&RX}+`!0l+*1?g|tUvn;p%4wxZ#lBW<)v#>O@>p{v^M*8x-9UAI z)tbD$=~;Pw)I-L7Ro!K0>hE}=u%b9#TMeoqMUnIUc#Vi4l0||PUndzyE#*w zB<|>k_V2CtXmU{Vj*vi2kh7G}IIS{YAI^+6hWjj}?vk-Jq%=0tospi(Wf^MpG7Wu2K@8BcABP?*2#GDK==Uc3N;tS~{R3&vX(!>o z-2rf)`QIQDZ4>8*9S9U*%W4t4r~0kpI-gkUFd+AQ7D5~Mv6W**S5n*SMGdr7new1i zBPEu2$gtMRfHVjGI|G3GJT^UHP`~*lLAB(2T>1Cze<57y_KO4vQcQ``h~<2%^Y= z5_4!#4|bOiP+XNZTxL-TP2eDUnfB>_CPw$ad0*V}G1UMvIX%%5yL{vIgncIVj$8?-1c z^`p%z)usysF0I4l5FRXr{gsG3{{;DxijpL>5+`hMm#FL2w{D^rcRz?p$qO0ChDRMG z%5|DD7%dY^$V|<=oYH6uOk%<6<-isB6dC$CnNsQOMu79-bTC|c!ozSy;1K>VgF*rh z1*;a}-(~+<{NJDc{aAit)DEf`{s7?r=c8F*QR4sQ`~QJGgan=*N~yjHe))fSN(8pt zf4=#@JpSM1{%>UYFERfYA^C?y{}q-0ipu|HTmEZR{x^caKK|E4|DSH_zYgfX-u(ZK zcK(03*AO^=b$#FP(Wue!)raGE*nPrYoBDA|9j3n(Cb-pg_nho z3VP@`(m!HIDe>X5Ow;4Bjv$W1cWdT|vAW~_57YVSKGPug78G+&XRc$l{Uf)o?~L={ zCg$V*m%|(2NZ9I}o+Raxv%2n{ULX8_qUSI_MIW!t{gU$ySAEQc9#S4XiOdCibX=-z zGl(Jsj-Oawyd|dbi@$E-6;kW*ZTNX_7c)%)vDo(*HHX%dS>kfa?vUCDf|WW8Dw-#? z!j5#u$CXBl9~_Bjn*W5)@z4Ant*}n-qU6U@pKgydLu+;meLneAWPhr!>5-bv3<`Jp z_=MHm_>pD85-Jc$TByxa+W&R9tLMz=x}Pw|DBjv>{X4Bz68m!>1pgiYB%>3wn1A|% zb#j2gVVDLxC-;_YdF}eXkRl|_&pEhUvcf?FFUp&;vu-Hu|MJLxl8%B|ERe&9oje;C z3!iG<8-IKMvCL`p_l|}ovH7*9BnLe&>qO|)-1v`DL99%ck*JCJXWT_N_n06=pdpzQ z{2HbCKQrBf#}mj6k}5XnuGZge2Fxut zc-bHQ*=Lc!XH}e<71&O8LN3M>mNreP*BWwMQ^8rbrzUl<=44X908YPX#C1x5`$K_l zWqbzW)c>p}hUK<75>Aavwytn}=66aZXm0S1l1b`UF14UQAOgS`e+Nnmug^=4_hPd{ zM)xm6HaVk6S5oQ}V&>OyY7a7kmyO8zpRfSsuy|F!!RvY@Vk9oNUzqe*3)X9KotXU{V4vHb9)A2ldxU;xqMfh1e#w)Yiz zUlbb{FWCQ3b*inRw6fz_x_LM%^dxtk?b}GhxKgyB#*{>4gW@b!C zKYI9ai=cdLK_;*^pOdF*k}6Tnqt)pTr_-K)p^|ag8#yY|6l&uE8h+1xxaGM6=H?S< z^WL$cQ)|)Z8PeUY^<#$SqjoB;l-Ulq4x8*=9J=j(*1K3zHj>Dkw{R#i-)49>5MlH; zrl3gtj<|crVn2bDnN5x-_&Og)@Ij zx%ys{Y7(gG^4A2B5%bA%bIBd8x8h4&+yNwpkHTUQ>?)LCSbj!Pse(X4(_cjHg|0>+i|8G5vowlNC5?#e z`$Ke((twg5rt!=;{;M~qvQCdp$)7fS9A}7bb5|!5YXgUO?hW+#r{a`+OWQ1kxmmim zzZWWPdGe1D7| ztc6RW7Rhr^pR9u$?l&i=&L30S7!Z5$m$yRtZz)MVpGKzBr}LM3P$FMwey7m6@6G5D=o;xS`F*pL-hL}+k3oM@WE`NBfXXX|{j7~zSVfm)!0hkD;3iy%~qR7n= zPkfoS)!0y83A`|{*I*P}Jk_RpVKfp@pz%V!cQ{+cQ)%q*zD{zGU)7m)z!7qX6wuSN zzG=&}S-ErLi0bWoyDjylCbD z^|IXFC&5aOfpz*%K)eZ({0a1YWB5Cs67p=p*9ZeICMKnx4aQ7SMkm{^--w}+F7o;8?uzxCB zcECAk_QX86?H{R4PFnu;48#GTZA8TT{I8MkmlC-~#CjtdNP|@0Hxg33?~99}dGr{h zFu8K|NNcT=p!KCp8zVso0SO7#Oi@BAD@)eowT@_EB=ac4PLT3Dr@ol!QTE`>R*`oL zw+X21j}MJaH4)^ye{3Vh{jC|8Vv{lsbM7wRNSTXcQOP);89MFyH3@vd0uxY*16tLu z!j14(tCo<@?|Mepd*$}1+Nw&$|%w>_(2Ah0mCX=16VR$ns6!C`TGxH#{;+6MeNqR~e3MMpCyGomirg|L46OM5zXx7*R$Cy-#1wI>zRGg}hipj-^8CoZ` z&6fN;HaW8M&cY;EVZ7dx?9!*6blEB5?MGJ}!H}Q7pl3w5loO?{Qs^+`sc|6(zGo7* zqa~||=wJ;F&_}+J?^oW5B*IkH4mJZQ{(s#Q1qfmE%jmeNfc{{3p8irxa=m)RfUH(^ zR5Xr)ewJ=3jW4+jM$-0vm7$Zq>)=)Jz4C=_@XpT|+DY$Ry=J?_NYcir45f!}4%2l` zbB~5jd7EnV;zrTDpOsbrDTaj*!SBDssUu>OcMtlwG1PGiHZVyq0{&ZLHlkxQ7z$z*A2ptU;TRp0sdu6>$juGE#3&kdpa4L002 zMY`vWyixe@8X?eNrlB~E1O%DXT?v>IutICN-+o&4-krX*P4?aMik6-i2r^$f z7v0+$eik=uwq?rT>)I^l)1nTd!lVE;6k7rN&9KreIsh{$6qcZmTVKV;$g;QeJ=ymf zL*PI?Z$)_ZtnWI>!S%Z=^(mt6{}>(^e*n)&c7enI{DD&bR{{?kEgl5$jg<1B^&~3z zH8)k}{O^%mn;I?A$p2>PiBUkXIMheR_qU8cijYQw(4`77|Ck9*?AwUI!IBN^ zJV@P*)xIci_u}Te5(&j6?STc3e+Ru7zzST0{46OL?BLIxJo7|Q-giB(n+?n$a!p|H zqeQ#ckhsQMWmY^CzJDS8KnVEo>WJeQZW!e^#6*~*ZpxmV$?GRZ5Xsi#(cv}1#g`xh9BBY@rm0!q|>9nuXAMg3%(X%?2e z@>w`uQ34@+mBdk!?YiAUWa6yCaSsW% z0pK-RAujcgJivkeSG-U`Lc-VlwuPPuvPRV(K4(#UprR<1z-Y4-E^GEmI55@upW=N8 zFDxKgfunc>Nbm{R@Ave25o&y%7m`lLXl=j%3kYRIo26uM6YnOXEJ@84nyE_^OK8T?{ z9eZ(Xgk^SQ_?+&3aq407iT1e_Z#X$=@lxtE2Gg^_)Lz|Nj0lK`u_-AM`}f_}SwH=r z#xCZ7P~S!lF)#wQ?<5TFwc57QefgvZTf+sUZNr`HeH zPpt-b^H&RtK7S6*BY*hH342dTdjCLpsI)r~JP>yHY&Mfxd-&(U$!KmC?LDi~+#`+Xl~ zco!k?Y+Ae&jgR}W?pv;<>}UQTo8k=LcK_oSUmw+u)uJ(?}W(R0$c@YnDnfA&8wX)o6=+U8>Du8fpmc z4+FTQxhD1jrYZfAa4xX}kpyA^oetRGQMDdyqBV5{a@fDdhL z2L@%J>LHC1l`QGViXp8|Z{EH*6v{YfUoW7-s9%zZ5_Af*SwZUw=|ZH-hBYYvw*|I{ z8|YM?qe~yDeg=IE10wpN2^q<>M8AC#a=Tr??{K)e$%=CdtE~82A+?^=v3eY2ua3~l zY*$(y-HChL(P@hXC*e`{Wq8HnM=pu>1*ua zwJ-Nu{6*3Ou=u*<^SQs8{{l1$Y)O~2{0?oYjFZDa!$L#|^Y{C0HPciWo-IfJ493<# z$g7!K%X7BXLrfg5y;s5y*^6cm&-Bqr71TmVd}7lJ$^{fsEiao-qE5;=T?JZ3fp*3J z#zOLanzDD~0ut}IQ_Xw2n9(!&<*rD486Ot$J*+mEXF3(TH^T!y0P2pwDTefy;9)R= zqY!`sL?*EPl=93 z{$95m@*(0|6nlk@_39WImc_h^2S0}`Dh9qj|Mg~{8s`(vCqI!QEMUQD3$#r{e={6< zpCF{Uv7SQnvys!uHo5;MW>D>o~)7e(-IGI>o?WsA8vpU*#6EFO2TJ~<(> zVL5=tLeoVcNy9pihkItfGcz#1{Ir3@hLy9W6Sh}|M^>GRGyBBgQD#c(=kCgT>%pPl#kzk4=eB|Yqs8_z1_@w*3Ua5vg^DGagJgnV zF7Ee3&iB^v(ZmR0nIcs-EtZVXulX%bCM=niw1L9wW&y?nanFi#P(hbE{5RNW< z%40|@H1tUfHYEZz!e1Yl{6BvA69=^5lOZ?+1D;+YM|mz97eOZGAD2}do*s|?>&(&g z?KWM7kNS2zCrh$D_WPvKyz*vQlb`UG5ypJ1_W{RrP0qHTbxm5`ijJ?z5kA3m8;aBc zi?sZpo$gF%#vurZ!4zOokYX6LauULU6c6?%Cw<~-yBV2sXE`a3IxKJ{c~nv}|NK5A zMAx+0Z7%u6RLf`xno&>hen0ZUWmWLhO?m!9RQI=?KV`Ka*Ra#0NOL{O<*b{Aw1>wH zsZ5KW|AA=Eyq|t1{y(KKF&sY*YA!|u1b-m<{5Y2_EbLTtubtBzDSswP+xXZ3%F&p)*4wRN9 zSL30EFSh@by+V&^`o#;|>F=@^qX#PWm|6MRzuX}N@$2rP{BH-;SlQ5HJ?>nt}P zV9rv@S>OmxnL2Y`mcZNvqWX2FWNu=2=20e*l7S=aeK#z;TOSmK6`8_Vl!R4*;4xrmwqitE~yg3+)3`b-&E z;GJkdvj>&#NjSNjR-jQ$ zU3m;LD=gUo>h^(*s1iUSMMDcz(dr)a=6s9%vvL3AM@btB#Yu#6eNXF2B|sr!%irRX z!7P;s1toxMsFZ}b96;`Uq~Uh%R2|wgps;R2fRzoPPpR69Ruz^p>2;m zVC_CuK;kihTAn77mj}?KndoVudgF^6@Qh4mCoBin^1X50?h7TKT4eRq-a$n`hOGyT zEHqdY@Hqh`2KeMa^~!43zW!(k1LGARH1peDp*B1Z&8hp%!a| zR4;&;qWo&kB3uzA{{aB_IRqTKiP@x#@`8zHI$YYfKQ$=j`Ixpkl27*)TiZc%oQ0mt zs*8M`G#FPO|M*?wAq+;trIjWcI@f2ako{cZ)jGqI_Jlb%NwE9qXXCq7 zcOE&UJ`Q@Jb8>`wemcCWJhr;@j!vK5@UY}g)?(R-v`p@atK%5cX*W4_+x2k*Xh6%l z%G2ltJ#*S+|m|7A@)1;84a%1K3_G79Vj(G$@X zA06fmMD05zAp6ITTuvlJ9n`(}T}#W$lC6`R`ADSe?U5;zwmRb~EHbuyN_<|Pd5$V_ zet!+$Y<@hp1m|hv{<&S}=IpS^^_Xh+-UH8Dz6!sn@W{J3e1&TAX-@QZJlAy!RS$v0 zUnCEy*83OcHz4B=iysE#|A$py09N&=QPBf=qR4k-FU~h2S7=;#f|-hhR)W$v0%BSr zcAsopFAG&pwhA`;oV5jZ_D2|uL;86E8O{`-oHQc7GMyx8BjB;eIL{I~eDFJA3mk z?eiTDh6qJ0!e8S77$Rcnc?j3Pgu{IX5H2hmU-3CWI2x)~ceBiGS0zWeJoqL_%wt&* z_q5QizTPC4zMVs+sqpvsdReO;8&uP|G}l3knb~beN@ZNtsv%z2w0eUM)-o}orAyl+ z*Bv{Kho@gHcS>5uCJ%NT8qH;AS=joHa*O?^l`@2Fzvew%D~mBq^{FvNau3n{C&vauJ(wYA%=t)IeD$%1 zcuK-MKt8=JPoYHyrQK_0YrCoCG2A&cyrdS1VLR!~8+q4?ckUcFsYgfI+L=OyJ@?*3 zt9PmA^7a?2kN%HS>NYuj73-FnQo46*Zm4a((JwUa?Wfl5I(pUuL8c1J`cp|f)*HF* z9=pEQIr?}0NTGlLbn5B7K10-d^ZWcg#b5V{2%(54_r1D<3h!ei-Fp&+`h=DV2E_tt z2E8FH6Sm(J;{wz=LF7G4!uxO&zB}joZ@e+54c|K+kI4^nuY6@43vLhN_I)?v%%7;v z&IOq~)O2d%R%$5kXgKw+XF3WBT+4G4gquDv>c!^YkuX6Y!%M)@jQn}`ctIhCGp7}+ z`B6g6;g4ZH=^2ZjpH_NyhHEh6OCG$kH0Xa}BSHN;=WqLVp3Nk$Dx0F4XnOQMGJmx*KCLWdfZ*RDh;$(lY^8;-)m@Mlj zt6pfEJ&W>8JggDfQXnZf46m3dcJ|!wg1np5y$@ zTiAdkoiZL0euI<`xZr`!8asa%>$ZTm5=$(1<{MV1EcJyg<8|SOZi;yt?^YY_KG(Ap zQ5yJv6sVs(VTX(vBo;ETj4`A4MNSCykr)263-VowRVQR(Rv?lsjwFrcjWi$(SrEYe z0FvE@)@J6CfGn=9#1%qAyG9!A5&8bC1bky%uXdw5r?r`>|9GTwGffa1>vfUAyWGyd z`Fms2_mOp^;#R_AOd)?X)7Ktz`Fz;fO7pZudMNfjkpWFA5FVhZ-CY6yt%WX{tf@@l zprR6(-Urmhv9Tj?raY?c=~#nn5F~}e1kJ$8|A5$qs7Ar8=4%g`1rjd;2DPcUQt*89 zPlOuE?!?-b`bn(psF)4S#_^uPFE8R44tyN~wdzd@!I~a?)!5CYK(Gqb=TO%GZ-(Fx zRONF>6_!*vUbWlJIo4jKGwen0Cw|2hgPbCJ{8L zCf--9`$SrNXegVsDy!98i5cHvL{4wM7adPEPq2e%tgXiYPx46w0a>sYB_^u+<3EYJ z1{eGq=f-gTe$v3TF>~VBKK76bf z=hiXrf*Ns^71pb{hy#bc9oYuoFdz2>H{xoMr{mqs$qJz})7HFR$L3w;qIt(DLW`Em z-VF}o_v<%7>f0x4w6{(U#QOG#1qM#wQ|X#qN3J*yx?D`wBc@ZDh{;~!u|k>jp%z6#Bcn{ zq&D8{Oe}VDL4kF&EE(}CfADFW*|jX^Q$BpS{p z%@F4Co+PMdPzaNmGZJA?RGjQ5Q;x`Y?RGO-^4UQARJahx41^o3@TNt>|0x6=UVIe3 zK7KJe$+MDrIa77)x-Vc9yd%)99wNvHef{{xyW)^%*_cCmbNCqJ_PRg3y=hO_Es@oB zoJzkUZ`J*ZFvZ1nBu0E}ig3mKkMNU7`)43mqxHwsbEFc|^rcPd61MV(`uW^+G}21C3+7-ICRt}} zoACEsp7tn9c~#=*8%pBi?xF_6MZ_dRRfjhT;8afP?#~3s(QwC(3_n^#2Tx8Z;jt93^zz++?H$f7ZBUBTOk(lr zTRFF_xjwuZL$fUOdh!gGkZs-8!?`P&9F@HTU#D-Rn_mRpuL=d$pNjDeSWI?a#LDIw z$Ldh7doynj1P^rIx@*x8z0||g-2C~qokEF}q%+cy1ryJB(l;t+Z$Q>=>-`1I+1}h7 zxv1eUF2Z9-GnuBpfUv_5(jq7{WdzGF)-leg9oI8fWCcqxo3o3pJq?_Pr{I- zQcp9+5wYB3^cmPr6O|>hs`0!@>ojODYz^NNsx$rGulK-0TaX(IHWJNit|MT{RywJC z`9pb)mMgiO-fuI14T`l#9Nn1qzDhHcdbfCo460p(goubJz4rQT%~=$a-Om|^kJ|+7 zc|G{zVYA_GQ|lo-HolHwIlC@_+Qmju>w+BM-i5^F*`aFtJnCVs^;lb*s8Cu za&oifx`Nk3-rg!|&lyCkJlm5vH^-UiGsYHC-=JV*9{HguOmW}WhxH9BlC=IsXs<7a zT4IpTZ5G9P;Zzn2wFrpwEybLe@pSK)_B>m@H5(`4&wT3|N)92>joqO;8l65Z{j$4E zb-N*P)yk){lqv=_z7I6PUKA^kp&kK*@WbvHVjG^=igs_KXKHUOAEOrPk4Quhb|#e( zVp7S_KHBz%S5hHw@c4gOhd4yJg&qGD-BRT9Bsg-?Q4fu`&+rG97@I5#)Mr11sLiSc zMwLU{Aq~rX(|*;rsb_5D%Ch^Buk7?6{RfXJ z>OU`yzYL+DY_CQWNQjPA{HV?n>$bCJO2oPziTqKqcp9o5@UwAF$yz3beY)d2miV-V zjqi=peCS%4Dzaxpty;ECgTp~3B0iom6;0TeKsuD6H|Nv%B}HjWZNLIn6+CDFtS2o8X`is&u>=lRoMyt!@M;_j6&Hih)*N| zqJBjRYI@0-d#UZc3BRxLh-bJ*MJ4tv>|2PvvHP_M9sFtgp z!)iR}`6C(IgGH108hCc)sd%Z0jIy~Bi;U#0**sJ~a>Cyvo+r7(!+eD*-=3!62kBNA z(qW>?w!EU4D>P5)_i|1+-h9$>!ghQPTre4}y%3t1YvbOpjIKS14#(e7&zIk_46)|fS{y=DY{(A6?DKBiq zrY7v&J^IqLH;WLIS?itxUZPXJ(t<9O77v>O9=kt8BodVpalM12dv@bpO_Ld(y-c@df$)H3uh#T@F6}Fcg`P#DLM35lNDp!wa#mdl;xl6H2+rc2 z$gJGf&Uf`Gy>Y!-lj`KSP%mc^uFrtGXhv}9xInUTFEDSO8Xj;{kH5zCR$%EVJ2JBD zB_g?BamnQvE+iLbmX_gB_$qQGW`DQcBuk5S;&!aCG>LbPmVeVm9fY3#C_(6m>*}ie z$+K?4Mh^=)pU@YciY_xeT(vPmhl+}29qa5x8IP^B9|EqwKewm-O>z?UbHJe>8_9oA z6E{(l>W_$J;%Ie>isH)o#Gbn%{4>Z*p(ij%$Dq^aBshM3nL6KX#P92<6t1e;3aWRd z0LE8}koelL5986`PdUB(pQMQv+y2bXT{h44Q8&y9N1V+_}K7EVzSvLLEFA z{PLPUWLsFGl@1VMb5O_qV#P^#l5fJ4XTS09F{XpA$aU0{o~O0|{rjrfsQ_rufK^HB zGXfSa%c?IC!l8Sa^*<~e+^=fW5lo`shK@(cv`6JY?$Q*6Lx*oCT1&g`X{5s}X!Iat z9$jND0}!RX7;)+aHa%)JXsKI7NAb>n_WooD@A@L zZR~+FdvXMXOu*R@t+ycRXheUVD~y4UCHpdfwH!mLL^~1`u(L@*D3JXX=jy*KTPP5I zb)Di1kDBDx;4U;Hh(5Ww_9}QURK)+%o6=?*S=8uFgH{9+b$7RCj+1jRpTq(q=V7=n z|92|gmNsK`-~~WO23J$U%j}15sD+AB$5r_ERP|c#S~xxG=v0zp(wK$N<5ZK)6O78y zdUJ<%}IgWNaX2w@HD!RmpwGj3=R*^mp(7H^;ksGa=+OJJ8sS?B~m16PNjl75c~wftplKOHt_Npj}+1jNEfA z&%5{9^)F8*kQT(9E19NtRZaZz80o*8?4$BzHQK>{oPgA-acR-G8u#AnkytTtUdG5D zOU>E*2$AghgHq#VP0>h}o?70sZrr1x^DAa~hG>K4!?%L&hZa?Br3+W9W0WHM*zAWU9@4I$+)GA2HsH;fyaN(b z$YeVU={FbNTA0uFuGT)t=16{?(zl_-;ay^6o18dxi$SZPf8F{a_R{)Y@mPatBYA!z zJ|_`!ZYwK8s{{}9FdRxvR0*YQV3^Q;kr2D#Qj)qcYhZ{r-h=J>S*J0VA{Mm}N(=xm zi0tKa@94Fb2WYw}Pwr9wj|}hYXap%ggwr6A%}Ldtb;Wf0^*_7;vpD?P-(t>dk56t1D6Ln3XEYoV^ zWg)i8dCc&bEvR z8uDQAaQ^4(={E1jTtjSdZaE^ojt*}&SNYbolD(bNa4~;l7FH0IP``)G>F>WxS0(=Py8tb^CEGDav_v*I=w2L}=3*oS(7>9dnDSE4A;}SsEB;Ie3;dD@e zQ=zsP`wNA6ok4(zYqAY7RtPH`^2yJJlTei_tPR_EWdyE zYd^?z?YKGV-kQ3M3Lg8I4xT20J}Txa^V#%+Wbiuyg0fdVQJm$kgv96rzv^7uuHa-* z#9m1bqsNN)U}w2X`D8G;0`XlmA-qSZQEzA)Fez+&-~g7U&HeEjh&ooWfrtk?!pi}8 zJ@mvYSQzs49Y|mJjALJWifulA*h{9S34eGAZ_JcnWWti z=R5aSahor&i6?PB^dz50{0#WJiXQ?km58Vj2fq~zbQ-`2U7u>0;UY(OBGW21IpMjK z#X5X#{TC!ZgaWAFr~dd#dob_?9V|C7nf+PmB3(TgSw%pdmV0`=ny3Ugh%j!!Mkg+k zA~+eug#iH|769!*(dOB5kl6l$37_S1(@=FV=o$LyUr3}rpa6W6gC`1xX%4!7Zf3;# zCtZTEk#(H}*jKz{ey#Gf1$|OR@v!^39zB?&TR6GRQ3Yuk{V zGQ;`Lnu)-gt7Pctz?zlFttS(y*S%D8KlN__j{$o~G|N>Lv%SeFK@ycb<{y&7A-iD# z1d#|DgHcT4KNhOJIf-vyDHhBA!t)2&pdrCHdMd08~kWb^Td!(HdZ|UT&l=7Ir{BC!34gblt&nYF60xaQwh7?A*>%WkCOvW+EghgPf(~V8JzfdNFMWF!>?q)WQHyA-4aLApT{Q0b5k=?>{eMG>S^8l}6W>vv|r z&+|Orcdhpy*BTddW}kg_Tzl{9+;_CNS;0i^U5?Xl>ulY;Cikc6C$>t}b@+=ar=?Az zIlS*P4tyTBi?6Jg@*Y3ra(uVLJjvl)-l*uI!(9@Y2gz|%0b-)#f9nnwk0;OT5n!D?#saIhL zAD=PkPtKW2;`An%m}IjK@e9pY8ly}s4BaFjRj4MAAQ0ycY-i*B!9k&X!jJ?Rk~u5GFDQ*KK#=tX%yRIK3cp;H%|aCY3h zt|S3mn|#LSyEy@zh0PQ~>EtaZY1!b!RB&%5%=IopWyN6&jt2crBg8uB($>!efw>6# zShE?#ihuJF`hs4Nc(>tvGqR+rZD1gc(0t7uam8lr--17$w`Tco9c#jcl2h)R0b^#rM6E?a5IRJaWX^2KA+luKZYUT z1ZXSgEo&VMEEZuBNZ-K4D6#$~8rh}n`k6 zCns%g--8ysrzS&XXQaMH`ni&3I!%bz-Osk}({IOZO4wJ_4@6nH zu1CC&hk$1feb|1}Mxm;uw!9I^5i-F0BJZH%Se$S}*SIP%e_s+4C-6WsFzQxxmFmpx zm+b?UA}!0sCW{n8_QtV!mSoX>R^vnv%HW-Jb_h&N*k_GZStwHm3YWTvw$e0j)3hR5 z@$A<6^D7u%TOQ+WX82U_w(w>$lMJ^ypH7u%yh$X5=dP;e6tX!&#hjjN<-BQ%pYLW- z(GK0soO#^9>;CpgPkXD$S$J2?wYbu-+0XF7L@qH80mr$%Rb6L|=39wQEiD?JXODv# zqWNYd7?ZeF)n%R3yGYA8Y9%)%J_y;S@Bh@B&?;ABi_v5pw6hH{RU{>kqUKPdb$KU~ zdJ5O|>(H8?Q($q_J%0AG_$Ky`q{91O+|{&|RV*vVXXQEu>r%9>T)S#i+^oKR9--}) zoj%uupoJ^P^N(k5sZJK?eDCNa-O0+8RGJ@XXT7_SE|qUjXL&+tHKR6YW!ps>&sl5f zo!{77k^&24?+8`_HX)8y`9lm38Q>64patgf57_MhKs*mv!-29#sFWQogT_gI3!9HHvdN@au%lxe)YjCbv zYMZ#q>6+W@&wHb3zWfre?&(&{eX{2=H*MO!BDs0nZ|Y+eY-ImhH>b(9QDMAD#Nh1J zQpQzh`j{TI$=e0kb!Hl~dKhd7mH6zt6J7@VK5E)khpa9|PTi{uO{(QIn*0(EFuh2& zkH@j=)LH&CV}^%49|i9!cK;%QT>yJKa2w9DvzHoI<-BI}L7*=F>Bk@Kk!}8N<6-Vl zF_JV1VkkT?&nNmyhYa-F>nji#qQ@4E0WB>W7LJ7m#g~2j>To~jJgBcpa+mA8&S>sl z-UcDrgYViV5m^Sc!kT;EiykCfDI^iwr0}YW3S~I_xZz03(v&9m_Kv%8uC}#ZW_*G* zq3-*6^A`4F&BYKms^=BnRzVeW#y^675ei3z#MeE^t$ALVHc+}@B-#~xG?*}#PvsVx zls|6g8D-gi;PHC2#Mb|#nMS#Z7t54|7YnnZrDaNn>K%wQ@gvdvZ0z35`CseUI|Cb< z8lP2HShMqD3;8BaupU4@1#hd6a~KbblpXz6$#tlj4_>D`x1mtYOK+?BIGSQlqm;Ey zNI5^zON*A@(37@rti$16&Kp;Hb4@SbPJ4vVH{xbP?cDQady5Y*idL!IJzIa)=Wx{3L{$GeSN5}?+AQX^SSr(S3mQ7$V)(2=PQjM_ zJ7_26Ex|p4`n0dvgSbw8F7EV&XI&3ZIRYC$KVribjL}!$7+2Tft`Db!M>`LnD?%uR zZ+nPe@jbwbN~Tvoo-!mq59zrIvSjmB$npB**GgjC4k}UPt$>87vo`|w57`qbcfG1) z+d0l=^L82GWN_DK>dD{Y)^72|#H&isd#iF~cdZt2JJLQC%2<|pt4E+l?A2w*!WSc8 zzRYkgUpw=YtK7{9*Lz>&{I|Yrx8G>YH~Q!MV&}}8zW9#h?pBkl@m3I;FZs_z@9Q1M z9zA8=*Cc?^LeaT82)s*j+N&{lV=??Worlx76XK4Zq7r; z^d%Vq!%H$Y&RE_K`f#B*A#e3^4X${hIKf%`v?i4gFP^Wai=Pp_)a+E-EBRyyoH;h+ zC2(eJV8F4_upnT-aG}&K$g>2C`nw#6X-;3+`O09+n5IqvwT+{zO$D+}LM;z`dxCr? z*qdH#34O&3O!X0)W1bM+A8_|SG;x!Pek|%L>69=n+_XI{+{4^|*L$ldeL*1d=73Db zvXyIQQTclpH3Na@Tk+$Rq8&2mD>2()Xm6B!vGZT1PWz9fee8dx%(8L^LigXFKyhD-})7L@`BoEK98)&tCjhjiI&T{_wJpS*|SExx*-Mjj#lQGHM+4Re9AVr zt)a{F5VD_FTySqA=6N;-?bGPu(R;YG9L3H;Pph;!`n#JfX-k50vU)Wd4D*t7Ipa$g zES!Jc@vJn+4J#-`g;tSJWKT2k9jm|rMd-Y#IPcD z?_2BS5XxU~w*){6R7ac+<~t6o9?yyZv<43h0(+&Lkz#~ZizDK7O?j(oCC<$jy$2I0 zT{1t{G_@qxIhy|Hy4zkTm1l9j{mgnWN3MKikotqvxQnsUeDkK(P_m!Hg;m^2=@M->ypU{aF>u(h$N7Z>_gMtYB+wSth z@%G2&MrykAx!o|nDe2vXy(Hw8AZs^{H+EoRonzL@ z^pn1CT+z>OQU7dubbX;H$Aac{TOghmk20|>?97CJ^PThBjwVNG&InQZr}S%il2swK zzu&6qTZHWDb7ll&X}=Q}xh7_bDFEFqej%$kZGb428k|(uzH0=zGE@7S0A8x8hlC(z zv+*&{g?Y`shVbqU<@h!X7N!%s=T&%qFPL89Oj}+i@1JNFlHk_})T)uu2wk~(PxT9C zcp}%(a`w;@;l{i>oe9_9PnOrS52kEZER$j%zwwd!GJX#vC1rR?NMKpW+rPUMs+NXR z4YP9G^$~gmO>|qe+4TwR%{>u+WGhv;%Qz_W$HL1M2Pbggz38lPq-aY@UD*p+nI7g9 z;U<@1PKr+qtWUSyX5;Gb&{jzF5Wrx;iQTr}<%{^L7GP1;>Lhy-&lKxdw zs|DGs`EwGvH#lRP)xTYfA zZ7T3yYj3sDR25|T6psE``ep2Qg&=Y?W|-DFlgTNcI(t#*#!*x4qx*%E>esJhfkTv& zSFh@d($udJX`z0s&z+I5`Uihd(YUnzx&`DDlXMukOxaT`UbtwH>Z){9rZlOK?GZfk@A=mEIFj8lOFEvUT85*$ zL;rB=lds!VNAylvTW{5lHc{_4@+V zN=Gl4`BlJQtOtslE0Ay^Ezjc@yOzUj+k~oA5E!>gGjC}(Zw+(Aa7lhZ`{+xeE`VQh z?jww>lj6)2lH!P?s@M-=*8A#-Y2g64jNIhkTNVjk@0afM6dx^lsM!>+ZC7M9C-Zh& z^XeOMd4$pG4gQ1vkh5rXMymsU-s<9IZaMEnF7b&1!&-Tpx+LBAmVb&(-&0_%6bo$r z@Q8jfuig5Djs1B$JTu4AbUdWhIB$I}ukK51_^h6@8^#09q-YnK?<1&3o0 z1Pud#%nRwZPRcYB^bp{UR%HN)F>D&r)bLCB6qNb+dcMD?!nh$r^mr?R?9s_@<^NxV?Q#o`J1{ z`cn$IKBs9rw%1Ua?__DTYy6o04v~fbhy?4@`YT7SuP0fCWFB9N?u!@4N8j|6yVa|- z_VYQq_k2M+8-~Q1Bgw)wv6oXfj%;4o&oY)(tsit)#wpC@n}`%CVL&ZTIHKbBYESEj zprz5S+A>wA30}One;OFer?>Hij)n^k57t>cvsel0k1DXIFVD=R6N`ZOCON-G|11}?4d`C2EQ&p`F%jrO`8 zb)Mp`hYZ#bT|JLFuEo-=CY9X}xSXe4x?0=zpl?5ycr{bO&F$=AvCDAs8f`K40b znQX1@tD3E!YD_EIY|kwTj%|J|w+@)q?-~T2<$)5-p2I7=A@3WLiT@*R$r@D&&1)JE zMUwqsAE}v>d%;&Ac<{fi3|1RpVqNIJ%^y-9Y@6pC3HGkEN2cz6bub` zHLNFC3%(X7%zqu9u%$Qp@!QdtJ?v$n$2Tg1`E!Ki4gHR-Cg05FvMz8+3(e}`c}ZOH zjm6S(*DGu&x(Hak1c*?nKhJWB(de+W7{m*_yD^=QgDT{|wG;P+Mc-A}3v`&ugNk+B z3L|lzRkPr}hcHUXQJv!vY?1Ntkt)crxQ+(3yg6MxL1N(o;vY;*&gT&&UU~*4RFCfQ z+|AM#6@y&8dC@|HM^izz_Wsp4v=DMy1U^~|w}!9~b;tob(Ci#!7WbDT1gI45iMAam zHWhmdZd>a^c)L_1sNUPQtdV|#c_m74WqEv=M1PW1e&}35i$MhTYQUS;?<%Ew#H%5l z*V18@3dV7!eg0allSOwlWep;AR(?G(MhA#fBWxR#mF7tFZS6p=hLjSaRCUEwY?<>n zHZpgSp&5RVmf$rB520~X>*{!uNAvudQiXtZY|OV;j}|yYRm!2RWt}C zi%=E@6rQ8~xc?I_yY1X`yx}wk${t#vXWc#L+vhRUf$CD?sDuEk*7ETQd`A~rL^X}> z>pDiXxFxUX^5k9+8UTW}_04Rcs<#`STsiRS6Gpi$)ab5|5cRG0a^EWu4ooe{Puh~7 zQC(G-m|=4}b_wv_-sge0kRA>e@V$bDM0}`k4?r#D%9a?gTq(8 zmgR=p$uJBKx9e2vRfg8n*$&6|x>Y?6-oN%O5Gnd~EWPBYEF?U@S--0t2A%XGY{|zUG)737+@j2UWR{s=fj#f&*dSTBJq7TohCPsO65HpIL5T z2jL;5WP&3~^RQ^&Fj1nU(gz|Bys-d3B7za7#1VzLk6iF4tf0}e#;sz7IN_T)I#Neh z&;l@l$crsKjL>=}ArbZB?uRo#Hae`6J%7pFgcS7r(Czl!fnTL;_Y)f@m`Y zES~x$i1PowgEE9D^pC|2n*HvlOznkA{1;#7x&;JYJ^bJdw41t5;gv@IHO0-z;|9rV(|WG#AQ&2SoUXaIZasm`4Ov_v;M%}!!*?@)apVMCq3am9`bHC}gL_!Ee{7Wc{v}FYMzoO0;P(%9Q3qHp4qQmr^sN`=^j)xzJMnV<;IE1Z7b9K- zbDsTf(i`*U4MBd*N9Z4ihgUY!*pK<^`(J23oM?J+;(LM$z+|8a?GA+nR+|+q-iIXP z0qw=*K1IL~(=UA2oIP{OGt^>2U#_DJ8qxC*{2;b{`b`LoUCD>anG`0;0#t>-1bZPx zSIZMaTCQy{@WNp^LUQqDQlP?mme3#w8nhnxaSQ3r_j^dgf|Ae*31vL7i4wWudkwQ= ztWhZRxm%iV=6&E`;CQ5w$1{)tT7KYftAO(D#)5hcp?XZ4<3rkRdtVmx1u$zv!JoQ_ zPJ5q%CjiyC<#1j5amd3Bko^-Sl)w&N31T7-)E*ot zw;9voMI2rQM%pr&cneR;94w2$e|iHLI2kyBmL~)v&ZzS+q6f~EHO>z74;4FLL+*!L z5}29&{L5ryc!9MT06A7WE%1C_-Ku_SGxq8ZN+f6^HCRTvOxW;Z8AhUKMn+T0L0t8j!FRUo2y0w5(n?P`5_hR zBNPPo(E^J%1*f3r;{)@?uSfKxuZ8|u5N2q2c=H=d?Z|(q3&3ixlH9I^2zemC(wd|} zMJM!-`o;T!SE!YcJ3yMnqg@M9Uno$2giqvp>D{I%9@+CryJ~MWn#}Co=b_g7KVifQ zX&BFvrucjPJ6!OPwhG?_d-;V667t_@{{Rz0fqgDS9?{QW)#$Za*}mZ++#C!vH_mPK zhZq?=5cuE|&G{-cldB|o6w~Z8%7zJRi zzgJ#As~BY;NZ8;b)p9QvM6P8j;3)z!^)qU|?I(A$Lu5K5PA47+xam~MJsk^DT?q0T zWa{CklHQ?c%Q>Y~Cxx4pfw*KGL%~# z>Zs&ZPVGK9L>TfEKSHqD>d&Q87%HXiS9+Ek#Xhwm&sdk=}bA3!*@DJ91FL_*$i-8`lyA(y>4j2LyV2LJfM*!-$9e z1upWTHK9IK=pysDrEZqw4SdwLwQ_ON_g{?7lJly)Xb+!BRfQ!o2wg&FU@B77z|O$y zD1r#lt|Q@1Gj-4F64dvta-|B~EW6Dtox~*z$JGkPzaFnV*@Ag>t_r59pjlN%%PgzF?=v?x#?(0)<50E(*J*<)`sAF(&s{ip4j#m=kcQw5nAe?lqR^yOcz-npFJ zjYXHHHaInh1HmEC+85EJ(Ldl1*nPW>3e^ZWDcF9gT^1n}4#Tg0$|U*dn%(B$FG%#E z=+K$m=y7&W1G%G^<@Z8vhYDH{eRl{G?;@*1@zp_yOY3?xBY_C{3m9j9UX7PX^@2D81I#Za z$UpN8c$>waIxsw>%V+NJrP_Lr6qpdV?>cSVvPYy^^hFZ)6$98QB8RQJ8ZR)tIYVC2 ze0>kyZWT?QN=eX{cPHTIVEK=zYehSB8jOq1ulsI2S1QZrwd#%k5?}V)=k!(zj9cdM zL8$J^uMZX>%LGZ6dG$Rq2Ik7^g49gpVzcsq|M=IAIbzzy*KH2BRHAp)$YP-CY-_bK zH#%bDc6QX3V*bIR#RRKe-At?WbpqALavFTW#8L{`Es35Ipr`|N2EZ}Dx@@ z1qDCsn+LSVsa+=TllI^mtRfYH43EiJ5$gj#0k2t~Ksm zMo{=s>o;e|gR1$1iG}xzX$j8<+vUHu>pxqb7HNJ0*^t{vb1IDIDbREP&!n&x1ppF_&E#cKF{cZ}uHPN5A2eYu20#V;f?ta$rWdFLhfIhn zIX{K<(%$=+v%aN9t--jHG?3gVs1$jt&9dpylt<+NKb!OY^B*&g!=J#SQV6Ow5ysA? z+v!8*sDuR=HONY3zP^V6`iL1o@8lGtVcZf{@9zoZ8OH7_T*)l+1^V{dZ`2F(9lL(W zEPH2HdfMq3o2_k6%}~I&g%M>dU)= zrmO8b%oS_t5hIa~vxTm;(<$z`6N%0a^UvaJI?ld(y;Fq#W@^S@vrB>SqTtE&6|fLa zEVR}~i1IJerNj&9iq%KJozCFya;TVJ9O;_iFx@zI;#_FWCO?+3w1tlD_I!nFFTsNn zuIa1Y)TrWF#MUZqf0<31k=ev$o0u1}brT?Ym*svZeaMpq+){>)+cYLj191_>6N;)oLh9pC$oYE{db)ee1Iiy==tgB1>I8#=qz-Q&lok9Q&ur!{xw%2inKioClo) z_Kz9=I_CvETCk+x-SF}Srn!`~q(3eQm$(3YLR0|Lu;YjQMvlk-PR=Y{(4)jaA;N6Z z)z{=q#^e1ljeT7~@fkH&W)KEZn+6}3Y6p?G7)IygkSe~redC^Up zDA*z)&6O{6RM;~zBdOlAfq7gs`lw2bXu>0ZXn~?P-QHPqasdlcddua7TJ5#HXM`)J z7Pu$}MQcSCMdMLDcL6EDrzP(V$CLtvb^1<#)>S!Vw)ozjR$HejGZz+l?S|?~oBb@G zr$)nicYb|05!8tBF^FK>fwq^Xw1_mNQ^hMYl87z{wMOs`w8w+cR|43Q6=|cUWv_vu zVvS_$`Nz+VR+XJMbEMzBuQi)zn)7z8-xe@L;&=>oV;Xrrl;&)Z(8gaoEfnUW1;o0O ztVe`nJ;OYy8WYup-A!Q>S~HcB@n=lE*7D8UWa8&j>MMyc(F5lSYop#GR9T)Ht|`p0 z78%4!mPR};E5Al(FDMU?{uqL67A!7(u!p%APIu}*Um5nsKKZTe&$y?p{OTQ3k`1lxyFr=fPAo~!v?%r<2F0Xy19G9uL+Qkp}oZKyq$RbBM02k5$ zzC7ragg$zJB;nQCw1qx;B;r4R%NLZs)=ev4w$~e97|hg8FsYJM7wH(O=lAXX*cmLB zkH1yOQ^3Q3!(K!#Lj}*eawz&4I^&31R1tvTtv`QQxuN5CAES#EG{cC1qy86u&eZl@ zBoSVx1V+qH!}}X&!Av#oX_)UkNTPP6H>nz_;Oc1G0b;&OID_dBk+P2!p3!V+teiUEXptlw?rybCo${1TSq<&ErqGO|w9xZQy9ila2E(n9%GtsjlpVF80>ct>J@MOz7KDM6`0a%8;(Y6@6K3X#nrG zN#Z#Q_GyKll|2qd@+eD{S;(qjs}1fk5eXGh8vD^WMWK3CWpet~$7-?#mK?Uq8)ud~ zt1Fj=d9#Ky7sD403B4iTUqVrZv-Ju94`j5XE&_?ZCCObP#3vmZawHRdwmgVLDbi%V z&&zP5ah-Z;`f{nlNe|?iWs+J~o=(z|S8r5W?mB7drqVL%EMMl4!DRcZp!|B!xs(%B zjzy(TzI&18KzxHxCdW!#^Y!6^e$>F}J-*K6Zu~IlGY4d3crqW5tmvXW9x$@G3R1e7 z1VykCEz7kHk0uP}>U7>G$YO9^)cWhXYdl==z*jScaW&#$}mS$eiy37gwhg`@U1 z2snmsL4uCO^7lVdYT}@%MykdIwA=%;vm!qsrftwdrX2TAYAW{shjG8-8V}&*YJbFe zirdo`TBVlXbh_=qVI7$zZiQpj_4X=CBi}GPj&`G$?I*ql7y5&?IBHo1u>)MpqZPZv*rVhRY;&BtRwSahA4 z`ez=qt+lJ4hg8b91GJbr<<|X`r;c7bCCtA6P?Ul8Wx#El?4smq$K3_(Vwf&i@JXaH zvNYuOJ^q}Jiq;MS(Tt^4;d%{U(XMHIAmClv(D{KAM+U{o!f9OQ zJUz?a$(%8L*WUMMF(l{T35DWg;SdiqL+*Lf=-yYm;G_zMS-x>GFwm&{@hbgm9qN4F zAd4-bJRBW(cQSgSp5gLq4fEHShhk+^hS&G z(eHOg{0F1MgNC@rT{Q9M4)Lr^j}%+?q82O9bMCC&j+;<6t~JP+Cv-ekNE}$^5*TFD z&F31je=2#}Do+%D-K@e=I5`<}OJP@KtLBSS+(C6eJ<4F}kWCS*#zjU5232!q+^e|d zYHW7XL(x^dko!B{`S(lnb|0F2cA&u}&;LxBa&6ATD8^x8p*ehbu`Qu%f8Tv$zTxQ5 zie|7i?C9$0Rye0j)o-j1MFe#0rysh@9}SebO}Za&4O<=%p3i!ZIag~nWW}#33v1d6 z`q?BDXIHR0*PWR~AGFaN%_K5J*{D1J$?;b_Q883woXtu3$uyI*l*)!WSsYLX{_c76 z0YpxO$wdd_{OY#{0wd^QxrC8P?OS*8}a*RD5UK&cR-FEFkgIt zMNlbV)?vvnAcLHFs7#H@@CT}ZS^5m|&lW>ErZt!hM3#?(@VKF706so`z(2UnSr-8TOpPeEdN=ta=8LMN-W+B+gHo#HnaP{4g8;cuE1H-!_9rJW=a+t^WsDenvUcZur$8Eo z(SkR4=Y${gy%|jJ*J(O@RhwXPYiKBD87&-(-CKgraeu?~P$A#oNK4VvZC&bRRaxQy zH9@SF`#J;1$#^%lK$1b}+E=reGT9O5ZBwCOpDSYtgp~Ks5DL*gf#d}|ZgRMCCn6NF zVQqXnWBExI#dkl&k<=1bjK%3Q5ABR-N)&q0OQ6Dfvn&8|_3Q~j=xDf@VS0mpkt7Ru zcg>HfPF;IsmIjn9dcT&g$%`8edivEZ*L^v*dREtIFYD0TS!L;YhR4r4JTk^sARKjF zEZ$>JT-u)xzv6HvCa7_goVH*lKOm{ox6hLbOGmDe9J(5Et zNmf)bJkKz&(eTt;Hr&0NH1G$VHpgxw^TSoZ5O$o`XE3*a=3RQEP=;T04PB5vq9nv4 zwd~HKUL)_UcS58IE#JXY;vc?G^WH;p&yF%Xw2$^f zzI67X6WrA1yH`oofvoIRtpLIomA>kqyF1IX9cOIrK9NE+CLobkVKr(s;dh^-03QCb zs^giLvF_7##sutNnc2<-0SPds&Fj_ZeEnRyc!VfFn77 zku-s``UpPTF5okzv+}HH7qT+2CFdENNPx#&IEu)H^W2?hXnXcf+pO}dR=$wPHTEJF z2AMnM;Htj+%y}zIq*6t(bPn(KFRR_=K@C%lvI;Zbkx|v&fS>`aj)wCgqFwC@{2b2Z zDXA5LiunC}8eiTswW2md3oX9PbWAb)j=p6?{WTi>imHJdWXT^SkEjo?KG0B} z!blk^`dOIGIZ8Kszz{Sh2*l=cBSG0b0BC4c9Av758Qo?e*4GV5b!^ zvVG!_&MTS?lS>Xe+opw{U+*B^TRaX#()8sncD6}+>pDQ@K-yuE4fP^4Y)L?cwL z>70PEDkWt{d-oM-*=OS>p6J%1Vhh#GV@oD zGyg}xscolfF?5a&b%mV|-hzi>lX`C@kC60gkM2bs9=B~`N-nRxZOM}~@K&a=x3?LIrb|j-~l|_EZatmP%_VzT3Ufk?q9bIxl-D?w#0guteMQqJUD!h_F}=$9;6b zBIH_8VV6$4)gLMbxDmQoH44)M(EAAZ=r7kTu$dO+X~1!0E`Y=~{{I}?pvy1`HJP+@w51+&1DuxEj*XEGj-O(rMW3(GRAMneLK4EK;gNfSY z8pr8W#K3QnCBG`cUe$#M!`}}^26fzIvCgHex=xjGdhHJe-5Nt(hZDc6t{r95&bf-y z-#Ji7V9pL*$qmS(wJTI%%GvlzdtmoYn>=lRB6h}O>_9PLq|Puj{@j54~-5ZoP$ zzz8fTR8d~_n$DT{sojr{LU~mni@8_{5Mx7D>xJi-;n^w6rua3SEaclu zg5SK-hF{j+`p!T}xFMJ&dhXy`t0isN>9`r`S-U3q)^9STQ&S_LsB*MMuU{c1-W^o6F?298Uqe&7IImkF za2|Lk$*NGn_CVd_wG?9ETTO%4fv**N#?GPowujaR8G}HP34@bG*H9jf8_tHgMqt!N zX6`U%xE0fI{B`Etg)?raYAw&~^?aQtn~Dv^eM5L{XMA_BlI6xMg*M6W(rI8b&GWg* zDaxNvG98L)k>fui@IaM{LI@9}J0>VY0NDV6oKLm!zKy~1J%Vx50_;D+M39lpyy)=6 zw~@rH!L#aH_dB*;Um~LvEHAioQ;EkFcVcFmlZP|)#ifG*|W`R?Qe8JO=SX`Q! zDPD88jdug9b&+l+%P|~@xBFF8Da@@D=<~FQKY|^foUdAQl&-PniyE!STcKk0By!Ht z>1v_|<{X#Z%EIHO0{1&F(S~H3SwQ79sqw!dN6E&}(Z~~P-}rL#+*YESiw%WS14m4_ z4a}S0d)Tp$?W{I%qwp>oP2gS}7?-wWS^}n8(Up9$w3U_2QO&7Fy@t`lYW}*Ua)gvp$2!rY{)7VIH}Ij`VT-+LDv;n&2@v=Oyn{40Vey$B~YW z-B^=^my_n*^((~07f#E957wqKj|XcnBG=|EGRWT@TNRxX)p2;^upG$dAM@`n;}5sp z-2ZfH4rYsTG$mc{TS8`W-jFa7qRMJ&KoAIrCOY^B`NTjc1*^4(SnBm)1Jq%jYYp*} zE6yryt$iPhI2vvp9}}l%biC$O-LBX(b>b2=!tQS(@(;+6#i27*N5|4l>&^Ks?J42t%C zv@6E7U6LyD$(UV5Q{5#Z<^>~u1%G;oc~J_HA%JtCMG6rCLW>=Q@2#NvhTuttU9{3@ z86>2G!pKUKT4RE%I=_)mugN%Ltl=btX>myQBD@OJ(FzaL@0s8`E{=Y=|B@$$Plz z{T+LShDQ9lm@P|xE`)i>RA7iju(kd#GDa>2<`5xPpAr1Hc z)5oc3>=u0vt2YiAsld;Baj~e6&@4zUVqFpOAaQp6kFVaf3_U7 zvsC`u&Kf!#`ELt$#Uq7iobi%e!S0OvauQ_?h-o1pHcsNrS^$o)3AmRT1|6S|BUU1@ z&}64~!YT5(jfk&Yxl@aL(!t6{EM3_ZNm;`OFYd^w)Up={(KGa~8{FSrpZY(Io`xS= zX~$5c!%Vu?zAI3?99+W#kz}LqZYqHJ*rNS-au40jqo2TT9leuJd^%y(kGK0IlZ#KP zb&oewSN)g;HQ>7b@%rLyt8Sh^{v4gvm>eL(xOoWsPL3VPGd|z`-U%`OIBL<+TxoL$ z;&~C!noB{RAmih30CY$a`o~G!#z~L9ME`{N71zo)oiBMTRr9n3Mlr|N666v37u6l@@J0)>^!=x=OGCv`JM9eXW%4YCre+5W2# zZLW&Gf$*g}w=qP)L=vpkTmyEW$j9{ux%<09F9#*2T{ChRKyPxWlj*&L=ZfZ(wHF4? zg3Nz=1HW$0>0ieRlN$UKDLRZwW{+rqzp3`OJqCuSE2u))K{m-Ls z<>1%sZarR+OQb{KbP`<<(`0_sO4A(LEeglV|C69#WhDcb`N`dMUF9sM^$U|Cni=d7 zE4%y`uklghqz^!JvDb#A!c4%4NG8BxyET zaVT1FX#Vd3{A+&Ei*zIB8u@nC-)`(PlcMiWEG=D={}ZMfz-jzU=%+-6sb+u~3vd3~ zPHraPr(ODBgDVxlDV5JU!PTrRnPJ*Cipn|lf~#lQjFYLRnvO##en>s@>h{gR!e-DI zq6Z9#QtPOp%lao(1q2Zqbin#VghSVLxrAi}y&1y&6XC|-=@9z^G?``PYxj5dBiBjo zhum_lDac(<#iKhqvFpw+J1c)j@J_CnEeemTc?|ZS*mp4fjZrO%VEGf^rN|hiS!qViFB${2A^;~k z@$HL%+{U{QVhf^WK<66x4XJErZwY0+41~xl8yVEOfb#+_XP}FIoFtYLz#Hz=Tg1tx z$+SGyr+5$Ew_V@E%yVk<@4RHL^nC2UV|uO}987V==5`|1^Itc#|COGL!4VuB_4A_8 zz6U`2J}}OWqm#Su#Zj3@!*pPxL4_p4{&E<&og|QNu)n~8TJG`kcL$S+0eUxVCAQ1Z zJ)jFDZpd}P19WQohZg+=@pYcQngKBnXI^*$L(cNw0L;!|-&Hi;!>wD#Hd-mH1*%(mFH8~ zD`l7b8K*VD4|x3oSosf_B_*3jDa+WijUDK-H7;-tG6A54Un^Ax1lD?5Cp(;7vyEN(+_aCS|I$5x*T^BRei$39IaY;#Dse2SuaD}e@;#LDP z+6DT9voz090Y$ir$R)A8jPBd-Ibnbo?jLID3=NWsuKk+~#^oY+>E^snzk`kho@yl7 zeiic}FfsZpM|F9MNM3t72I#l}QwI1Za<}Vo$c*Cw)SVu11@yzUDmt81+>g$h8%g)f z01s@r#3{6C{E`OtWLVgD6Iu}Yw1B{*;A!5))h$5Odj?QoS2Beg@<}_lrf0zvPKZB# zUk|uOhq2r?uKgP6xcU_NB(US-zjk~{v^eVJx~keJlK^sKK_asL@;w!4x)lM7|- zaQSC^&%$y4a%87}tZ3d+-c6!T^g18QHcifv;F3i;eGQ0f6H9Xh9LA-4U zmrnV7$$SBKPfqPUJtm=tuLLnJ6kQFXWMJJwD5wpD5}~lSEf@khBY?Qxx-Tu;@0aYd zXa%MgRK-m>5j8czBwE|#Gf}K(7K9Z1g}Ssh&w-rpVg8%hs62lKZ6670&&gQ993F5k zg#qVMlYM0glq%NybeZd_RDl0wG4^B7OFOw~{$hj^HG!G(1QUMa;(ji28QUCyVgeLy zOaN}XGYo$7&D0}TUhlxp_`h6Xb>Sw4)jI66{|@gv+ewN_&|&_sS*Jy^TUhWcr_Mc-orL%QQZa*z*nQ~{w9Cwr{vC>4?}0tVP+?wNoIRdC#qsg2j{M?71!o=dOzo85=>>d)wm}C)ySRtnGlM3#cF_604w|{@u zFk@>`jPbUBV@#&rWA`{R%BxOBlTo>sZHAP;@4rL){N7y}5p<|1{*(8_7estY5Td19 zw9Ps|K-~VlOKj?aGLtt*QcAd4N-3}sHR!yJVX8E+ZJ7x*9VR7qr>1yL3wp*C+UQyL zgiQS`cH5+O54wu%4O~iAjf(;Hm*2R46%8QW#&Xlp`gQ zV>xn@W9B~7K_nTXu z?n2KBBG~>3E{7%|wV+p3qE`E^n))W&hOf~%OQCU^G_~ocp;CMt=ihA%#@0`Zf&_{u zNXUQ792VxPMxf}s**UB0pEnr}0Xiu0@<8%RWfuG_s)#5+jw?^0Z9#=BkV)+D&H@@eTTL89Kb;#roNl zn;dw1{DZhN6Cp4>@*lhk5*gqR~NW62_E&9Ih zyU1+|T&RYV%V{+jl%SDKqALcB00a85$>2zHT#L4TArJsx{=2yyi!=gsQ>hGEv9ExG zD?zvi?9qL&IK6ft7M%okVBE@C%riiG7+y+ zg@QQ8GrI}_V70p_#k@TO1CPeqUTA#Y^!`)lAI!}L1B5e}BceknhNU|~!kfSxhZ%MZ z=tCDn02s5j>+_Dq2UD`%FqmMzA@x`(5Vnl|*n-m3?t@0099-Du8TQkJliD5b8z%~p zR5hKO(g0ELV43?gM@tKUX(Si>TBtG1~(19k{Iz7WxKkSN>=doe6Ul6WiPTUE%KpBgr z$2jg{hL{+v=632UV490E0FV3RL}|EdxiPnj#)G4SFuD8Av%SD_Qg~q?iL}bxZD6z8wEd^lQacancn}t^+j^3-_(f|l&Nz;8p1|{ z_*`Hx5taFXts?{yXox^O+*Snkbtnd>nf0&U_ZyhGB#clpIZIir3PcBqYU#Ez7A6-d z*-QfV$Z~~aV}B~8mgAq?ZpNCVb_~eir2QSQkX1&3U_{Y2d4qNZD=&c$Z3O{M0l{(& zsN!FRL&(}<@V?%N9FzK1xv&oFNCN!F--k+sg{OPE7@glDk!xEwjY_=8A!Z-lF3k;cU|pG`zI<8Q;kOO-S{2eFxE9tgK|Zp`u2M@l^3L zBg<>(0)La%lJAz{rW&sR<*_iJ_7N-H6NYj@v;d?D1ycCKl@5XITgrpG3`u_OId)RS zkbtNH`kMri|QB=d3?&lQ{J+cT_1nIW=+AV z+o~UBg@61x{Z*ZIP4Z(=oc}=~H?|Sv;Vpr{K6+A@9N36kVz9F|Ug_i37sMD&(&`?o z6fxJf#BCz%IVzR7Ty03O&Oby}9Nc5ObL6J8Z@S&3FayE!;>@bvne2~-^+`qH{&seW z?A-u@7(hBL$>s$eTW<@xAi7-MpZL)KqlSTBoNZ0Tyt`6iqjB_sV8ZUOg(!vnSZB{- z`Ex1OWqa8&KJj*_HZOah6(SEAL~n8F#Ff7&9R#a=)FePEZ8ivAzzVS@QKej|ma=1N=>&I`OMU|nqUBaWp_g5T}BS5@_WH&+faxMlqt z_m#hN6=patO2T6ryhy%=O-ViQAO54P{vOcIK_n`?%{rFQzh6NV5GPneBF7YV`V%?H z)3eY0x zz?zr*W#huSo-Vhl;=JUtQoOq=Zm88WwIPL@Y4HUh6y|LHFrafP%1%7E3brN6iQ=Z^ zCo{+d+Fj{u@mi`oQST?`?s<%7O^smnEhX!HQOkwyc$Y`LfoX~7H+GrE%)O**K4a4- zp;2sr@#{Nw?Hjb3B4YQ@DK5MjbFv?qCaD(ZOW*U+3OCU1TH}+b0s~V19aJr}zeKq> z|CuKqZ%o0Rf#wwt)+#;T-a!ny0mxurJ4OdCYSE7x1nD+Ma`Z>Envz$8cD>FrofidG zNo9r*mF2#*xy*x9 ze&Y<965|)tVVAX-;GCQXQ!dk%RA=!H0I(#teGhMjfAmZAwe5rG#R2>Lq$9^kShK{L z3=FkWhNs$K*~5U84*3^7(IV9oze7vlv!^_pL0(^1dnRApP z*XJdY>#7&Wmc5B+d>yornGW*MMq)<coZUmNhYU0iL7Dq$IOi5DzANwrd0KK%$Mrv+^aH`U;+ocd z-C6U-?S# zRF`;Y{DYY;0HLlJVV$VXIvo>{Rt4_=at6m;#~KsK`2D}%i}eD^A)m;*DSXU+#2To# Oy@jc*Nu`m`#s34(0CZ9S literal 0 HcmV?d00001 diff --git a/web/assets/news/images/survey/breakage.png b/web/assets/news/images/survey/breakage.png new file mode 100644 index 0000000000000000000000000000000000000000..76977c91eb60918ba2582fc08a308e3f3aaf06a4 GIT binary patch literal 42872 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 X;{I^my*~-OrW7Gs+gshT^o;vI1{m^7 literal 0 HcmV?d00001 diff --git a/web/assets/news/images/survey/difficulty_fixing_breakage.png b/web/assets/news/images/survey/difficulty_fixing_breakage.png new file mode 100644 index 0000000000000000000000000000000000000000..022aa00ed8bf173b6c7a4a42b6b6b054e5ce0ee1 GIT binary patch literal 31324 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%0Av1 zxp=JUt`&A?8%9}9mk_y6f>0Tb>aoy^j&G~1%&1x-%|s^&6tEwtLdqc|jCN4C?DD@S zq0wJ_Mww=|8@t~9WWjMjrQscAhw#J)d8uJ)n7pTGllZNGanA87U$&m7J1DMs>@;>* zq%~(UM<zSm;*hnI@oTSKL^)LeC5VJsVL{+G6Yq zf`FbSSMAvfJrf1=%;v<2EyjKfLC@3;9&816vIE#z_Vnq$$6ogs0XqfqfZp^kobdyI zonx4*SAQaRf5VqXR}io>R0o(%|N7Whc=RyYTz>p(w22`~i zANtC)ob59S2`qU56@8upQWn196a!p#D|`0x!@VNqN3BZxZr}g7`Vmzd#UT0Nap|(h z$0)N-z>q>mBN2EgwUCw?eXi=K+~_OhXNkR!r`s8J;}82|wr$(<_UfeznwtVTZg^Cm zsF-NoE;+6OkzpJGpoLB|+1aQ9*?fqPNg`o5^X_ytib047DlbT z%eGY@EgAUpr{e6IILR#8_=^(5uH@WPsgN3347YM(n=7EAnR9n?ddjQAjS^Qm52d7j zh}zsSr`Bje)z&^wZvKJeFB+h6x$6V%w`(Ui?r}KQx$hhJ__EdD!>e8{s%MZ+hBZ5b zv{;^-WTFSBV={A_p%wXeZmZBFyam}F+UBMJmE-Jds4}F*-Uk#jDMcNkfl%PG2lzmp z;LwLzJa2|1WLd8XjRYkK$Waq3{q4RcEl*zDE36r4UPca*PDKXs)|2_yCZrbv&B+gT z`MH}_X#fzpEM7AJ0Hc;wuzWw{xyK{-mQ=@%Q4wC#UO>301J6zv6u-b9HMH`ZDn>x4 zNmJHP{LvBMGsn(DNhHC?3y=w}iM68o5p>N5M?y8wQ6SU!vp{CjInfTMHj%>I85p9-0kge4ESjkrA%=@Kmc#lqQ14c}J&P$WM8u-?h%a&wTZ#N-fIy-qAt< z%$h1(+MCqRaiJ2ft+jhzSQWjNnEL}VD&2_prm~CLGn<0(oW{q8AkQ)y0a4u{T?5G^ zY-~8dw1Q8>3Nd~0fR5If5a(6*CQh?#*#$_E*A3Khc_r4I48Eyno&7Vqo5i#@Za!e` zgc?nesgbw*1-$|W%G#x<$;X4wpN_MA@!O8@_o_e5l5abWKFO(chGEmZy+C-l3&lDj1-7L;Q21ZrwW`Vg{F@+ zf@@-^s?FqE6B#uJydPEIzF8<|&McfJj5pbX<rZcZjDG2M49EuYW zmZZ940>Zt^63Oq7nS*sxLe6z%VVYblM>-#ybo->=>C_p9#Gq+jkv&3=UwSZ=utw!7FX)Ugo0OCg!4-5iN4FWIpv=#v7u6^L@B`N_dbdtMAu+01wv11C3 z=3Wq^==49C8(9OWCt_YQ$mLE7 zh+3-wZb$K8oMRm!_~RmE4?51fNPVD2_Hh3? z0q?_UxzGAPbUy}u>dD>)T1Eso)pr?k>N@D~szcitVh&2&R>f-W01 zgtNu{`|gLxA*U5Vx?{)Q#-gF}gg0SjT}t{ACs4vnSz|HKk4)o(AIUXvta~r6h^#I5e|EmybsqPsWLO%umk56NPS>oi&ck&;9+LVZ| z0eFdX>Kc0gkkHS`5rDWsrMafP#TQnyz@z_PuuXaXUth2<>)V19niYi1ymxJbe^(XJ KmvS!}-TN=hhXzjo literal 0 HcmV?d00001 diff --git a/web/assets/news/images/survey/learning_resources.png b/web/assets/news/images/survey/learning_resources.png new file mode 100644 index 0000000000000000000000000000000000000000..39f533ad02176639132710c8f7b16cee32bf30fd GIT binary patch literal 39711 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 Ic-{Sf0QD`~BLDyZ literal 0 HcmV?d00001 diff --git a/web/assets/news/images/survey/nim_appeal.png b/web/assets/news/images/survey/nim_appeal.png new file mode 100644 index 0000000000000000000000000000000000000000..4f53e1447898190cb422626a2366024ae141dbad GIT binary patch literal 54043 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 literal 0 HcmV?d00001 diff --git a/web/assets/news/images/survey/nim_displeasing.png b/web/assets/news/images/survey/nim_displeasing.png new file mode 100644 index 0000000000000000000000000000000000000000..b7232df04911683e14972812782830ec9fcfce61 GIT binary patch literal 52584 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℘-OweS8P=O-N-#= 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 literal 0 HcmV?d00001 diff --git a/web/assets/news/images/survey/nim_domains.png b/web/assets/news/images/survey/nim_domains.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8fc6652b64065a1603896a2fb6b663a5b1ead3 GIT binary patch literal 58405 zcmeGEcR1GV{|AmoiAYqW$jlbX%(zfU_9j~)d+*C8ltkHk@0qY1ADg$qPCpnqtFiM`-0LKnnE9xFMa zEstTwDJmbHZTJUyV_~OwY6;1G4yud%=1oW_Dq?`~O;l91i0PCNIpU&*GsG96#YYiP z{E~=J{`w~hssO5_XQz8E4zljt(bUxJRqR!*^R?RS;ubvfqkC1UqjZ`5l9yVaVNrNq zKtK0IDDV=hIjca45bYAa(1mkftk5rUR9^q{RUrxo@cK)HzS8Y;e+|7E%g74v-z_YI z*S{9DW<5CHGI$XDo}XlYG%9q#Yv>Ao&l{~!`4|6sB8sF&*q0k@Z(n*PtT{zF@f0k{?#@b?&`k= z0sl?>1+@1=oOcMH{;O?t;?ax$dP;mgG<4!3Q#QuHf3*!J0P}wn@W%wmMSVV6Yp^_8 zE(s>J{(9XvzU2qjSEZkaONA9p*Z4XT;Hc~agpMzbyR5;E zj<>oM8ON*bO_xTiO3KWUTm~-bu1-fQ6)WI3+&rT;?aYH&@~Hup+p>Zu{R!@e#*X=^ zPv7UfF+JU%4we>V%KPNKQaK&OgM<&}sqLb23)M4a;?4S`xurK4zPV%&EQNWipp%n1 z{X}zFDMREb=c=$osiG^VVE>x>>tNZxxe$IItUj;mTl*(_6XvnzACMWwVDKpMJ{+M!dpVhq`b$%;R{&-@I%6ZYTvdCx z+F`|Hsj$I4e!#~&l~9hN8nGk4_ny7<UW#)1c$`P-Sj(SINz1tXJf_nx<<-d8E}MrG1BuvC_=Da{hX{8)4y-=RdD;rcVs69P7(wP4KUNH#a ze~10mka@+}D`t&yj8 zWPdUn+XqH$D$-A@W+ODz8{ALK(!*6Gc({<5@rBwPNb`#Lm8$s!j6{!YZB9gH~tz z#wN#<7fpVvLq91S+KL*REUBEFWG>-#xAMD&m;BcnNPQlH_RCC@Mo1!03igyVZG9Jfpg;qBzU1Lq{5! za4ayu?X)0s2`!TG0F#N9THAHw+qU9O!P9*`DlBXz9_`su%Zd87jbW~M{FdX9cQ*tHXLtCQekma>aBtuJ>%|So)cW_)5;op;8bFU$dK~Bp!BjQ>9KOx zkE+Lbi6WnDq^7zB&!i$Ux$C8zFEhQN_NI_(J7C+*<~=yFWv}yF^9U!sG^q(w)){MG zTnuFIva%1Agl{5}ZTmteh`zxRv{m*?Sh*GB1FTucUAH>Bgv}$EF}9p4^@6|?hY4dd zH&mOS?I3gvk4bRnup~yUn@QiA?MPq#Zks2EQ5R5@J!}uBQn8RBz z*h<6Msl%{A```JYbc!tzP>f=X_y$k)u)m!-u3}4hXZQ2nmp=A2E_~|9??2^*AP`Wwl{Oe zIMHKIMm;<{(!%lEhp%80rhPn^WKKyMb1IU$CPUxBIyE{}(L`iwQ>kO`ff(MCtlYad z;jz}Gx`wfXh3$>G>V9Ppl`Vd%j4g$vIHHJpg(^$61BXMkaN=rxPypX8+H;bcidk^v1*_;kC;`67a`G zeIGZJkQF#cJ5mv-m92xh5_6eF9Ysud4Cca_vcx8BldZ_9MU2IUfwL*B`C&HSiqdh^uZ%HwqW6lp`%xtvV;J z%RClp+1c%>rIA3Pr4VX-5#JJ_Hzo`;%l=@hNOn&w$WATW-v^$Qmig1`N2ltItDK*7 z7vv8u_SClA7Gn3MvTq+4wsE^@JlLk=u?(p1R1J=KnelRBdLUcl;o7$mda%Jgrr&c{ zqZS(^QN{!^ha|Y(&&x+la(%hC$RKQ+B!#hgrm7N+Zl(4MLCn$Ch568;U6tj?zQP!O zxVy5X&3?kWkmM5*TY|xHEDYcL{PVqE^?oThat|w7RWZB6C24e^FHR$l7 z`5Y}a-6$=+$7%22>DYF1j_q33AJA6mXoEkiJ96z6r>mmmTol$1!JOatj(LwGkal6? z1Ah}9w|oVB*mz15o??5~`dQVz@m`d0Or$6S!Xt7N z?f40Vr|4bKBFveOXy?!&ylQ~6kJ%eU%14WLO)$=n&Ps}Gy@4D4d?1)MwZG}9IW;pP zi}I@b8&Lq4HP>#ygr4qL5!V-Nvz2P*(Tdj1gh-CgL=#ur?hYH)v?^Iv&EBdoGv7bf zTtk)`>ow-wu?SJbMlf~V6wSo3tvyR;+d}+_O z(7Y>-$GrsSmaj_#wd3*H`&BP1%lPe+XaTW!j|?`SDvjkB(*o@zKPYL(@IiwX1?0hRvjoc6hcZw9UC#%b1ZB zum~K>+6Hk2g~KDO#L);a9&vE{_!%vz2SlfI2`Xy&yj9jpGEQ{cwazWO)Q+t7l*`bY zuFlWcOG(`O){U!}B`h$jTCqa7zLm`jOFFKqrGgM`m_GphZK=a7=c~^^67v7}8X?grK~a$Dhxe+VW9?;Jq2>EB zv$Tk?epg&#-Wz%A@^XXj2PzmLVZn)lO_&@?ei8Xf3f)(6rR8~0-V>=}!QO3c_ErL0 zdNaHpYDeJtH4caer%y^}^59irdO53g3ocVx&EbCX1`@-5UcSMd%3x}=+e;4*ja$^p zmBw_X%8!SFe(k;(u=^xRw6X}nR>ZIR3}p>5L@#>N#0&Ct4?6WPG!fO0IUuVl_C{@G z2Pdgf^@XLAek3tEUQOn27F0jo*DGc@ZKTx<+l_ppFy>kqxIU9`&@bI2v7JhAU(J-Y zZaZX&Ve%sJ$f~~tebS`=c)wlc+f8X%;?tDvZjV#;su;<`hnxp@?N5hM4&Mk>A1QVo zrI2yX#$neHH8H*3PY`^OD9KvazjGDavVBKD1DrZ8f>$g*mD(0NKCe91U7VZoKzu z#F;Ig8;T*xK&ojPF`zj0`lif-hT5#T;B~EmTz#dlxWuW2mX6^{XX_P9#2Lwxx67hw zW#WutA{)Dfr`iX7ial0+Sv|osjIm5|*;_4dW6Y)Q-b2IP`LF>~Ip%5g z30Qx+=L!EzFPG*b63UZ7w?p-VI%_~&em*f@M*Xltr@`IA5sozA%j~ZpTGH%>|+xNi8W$p`HI1@l)`@cdE_L& zxR*9rz^ojUF{r)<mTbw(P6HcSKzq7HA4tO8 z1)Iqt`W~TSu{f7q38r{d0QPga451xeOn=A))5Ig??Vrt6X5>(MYRk8PrVNv?i#IK- zbNJET8Ii1_39@!RDW=#362k$}E%p}U@mgovCXitABNx>wj()zzqw;kzT%gvP24uq8 zT!kEudiqxn+j!1CljWW^?if6g#++s{mky4KfDxU>_hXI|V+Y{qnp=HbOgvl@ZlBU2 zs2a~wzyH#)VTPAh<|x3P)#SN591@nS)D7ga{&@mXPn;IvuG*K!#C zc1>VkSM?ZB4x^g9hseIVY-O|U2{dow#r!72zfNH9xAlKkrm%; ztY~?wT?emPDXc#+bZg_$OHQ#-w}Ik=2x>#j((@9@YPP&n1#kFV z#+A6#K0zDIJky!zaT<*UPp#zl(S1Vo{8ee&;(VN~OtDm%G1%g!IP*l??$#@$dGw+8 z`*aNPpNaFYf4(@`bn_tWjzDtHanpQ81Kyn5vwiqw;hbK_OxOCe)1#Y@@jJBoem43j z?k)-!EVY!$&JWIzAr6KW%5C1cv1$X_g<;SBfgSbr?V)FvwhXC{>$uH^KIwDjg5W=* z?LposQubCiq-W-2sNU^J|8ZNd>^O&Zt-bty9xYja4h_l;Ut6YsKK0P`^kCjX z1{b$=J=BL$7PqLibVR&>cXlL`&Bvd<@1goPN;jwXe)TO+n}qwfX!tq4BPx1SXR|@F z@ricnM);(gEp19>Mn?U*^!bbF_dU$Wbfngok?7DZIIrJ(2U`>T;(=! z3oluvk$xG?Fk2m@c@(B9y|y8>^P^mI_STkmzu-+yR|!P2w%F;K9MazM)|O>5$n1s< z6RQ#=P#f1}auQETKAct%3;6B*LU|jv0A;hbo4Wh!r{BIPrCqQ!QqnK6{qft2f5B)C zu$gO-!6Sdtq;elYykjgLt}+6P`5YxW#SEC(@fER^KbhF9XMhqV9A4JsfD#=jX#V}> z|KEe5y$>*RU?GN3>u=3?IpF}p&GAUy<^1btmlzem6N_^35xxJt1<;mIEe4>hYfiFY zzqS1983-AKgi@(uNw&yZZU5n&CK^d*tecU{ia*1?2@+&MDMaFnOtt|TseEhb|fO3Kl zcKN$kDIx#eU;p_IAKL$eKmWDUe)9r%{Lh`?DRdvwj8dYrsQ=u6Sg*lCf6eLi=brh0uQOiow-nz} zGL&urC5h&NJxWP+;`(&t*PL;sTmM9!q@2$SURt>p`jV|U`yQc=sQ&DkCG~jhUg1<; zlQ^G$je|WS2rDuN47GPJK|DY#mw61c+7sE=Hb$}qX#adF*zQx5AYziOh%iga>2^dt zEbro78Zybve?`jYPzsW3WXs2UlAkh^uKfNUe0o7J%(I9LO?hT4*W-<5hxJBG!lHdHN_vG5f_PgjE&NSFP3SQO26+(w=Cc|A8kmu&X8*f3Z?rs4 zcDU>onw zy1oPepw#?R&}$v$tx?ucnQV0}hXg9S`5?^=0IEW@<{ zh0rnXwx@M8=}(>qhK9v+15k98svbYT5$Tv2#@k1@ZT}D(EL-wGoRB?y`Fe34C^O~d z=16tvb~$Y#ExV7*&p&-8=DNR%#WCSx@YPAhW5c|S>F*iCSM~aF@$6{rN9ACH!qUo_ z^s0YrWb8#4M_ayVRf77>g@N2iH?S^PK0k2THB*$mf=jYte7wK0YTh2fY(Dk%Z7Vqj z9Y;1qg`XrBVEV%?U-!N6Cw;Yp8j#$b>#4^ickOXNnsXC%^vuUZ6b-0oM8n_Sg)bz7 zNlj#s{13MJJLKSaO}W#Mypzlb!6J~=1zA?9Z5L0o%%jOmd;k)zfR2|6xE)4$llEoG zI%4cBAqpkDVz}>(^5j@ge^(AtGtDnE14^3pV~BO9Ra z)g(~l^pUwNzd&d?#v8NXo^M~S4O+OfgUJ>}*Np~p!r$NJ=^fYuM2$@$u|!H*0^Wq{ zmULS;Bt7C1b66eOp70*8H;vsTAr49zzeAi;4AvN(EW^_~&3A1BJEI;pJ$+AXVA*g| zzJzvT6&7+oko)(b=qYps$lUbF-;)?OuJ?=*0iryP$08K2LVw`Q`u#o0ynyOFq7jqa z3{{sLE>8wupai7UiKblBymBC0SY(^rx=5XL|B^7;?SJ(GWXe_cSsJa_%hgK-1(~nC zuUgh__>q{fIj!qz0J_b5t!~d@XRzm{bUnLK4}}Ye2-7GujmXJW?{luDF!@mS-raWOm1O)@hxU`YE}9TOjh;MmKYA>DRdHdjl(6NC~0|8 ztNu)_Hn^`={1ulS$_v|yix%zaw@Y-W0t_^8!l#}7MvqC`m!6lGZI4hV5+8VkMlKcS zU*g!T!g+KV?GpAa`n@x!TUQmn)AbA*j8@)ZdB5A`sgMzCw8UmUbU#wm#n6kPud~!K zn#;_uopG-`L&w?gso~AP_v1f@a~MQP^;(dd`2XvuxC2f`eW4fsd(Z#I;QzzxfcVwW zcUrJxl8n&j6FuC2Y*O9(Xa8_v>^n-Cn<(Bw_r>WEPPJn15=x>+2hsKY$$AqW#{3Sj zG-%W~tSp0we}7+7<~$;469w_5s+1aW9mi{}{;2D4dr=SQ?ByU*XaL+~HlVCpmMrW) z0ycH7W|KDt&N9#w#fMLu$vuWDCfrRSDYnhwFXiVS_!>?PgiHw&^MW!NjB$@MH=v4- znYD({IJ7Zj4gs>sSny;!6cW=M#_SQpLq&Qkf@cT8oW{M>YO)xDueuY=L+NB?ET(bK z?_|$Az#xQv$wd6;n#WlUvv%!}w#SM6(ny(UasS0@k3J9Tc)0N$%!IChCami?kGn*u zUPwl=?2tQ)o`Vqh`-y*X@$n61D z9W|g_n}2zIWw(_sv2yS57@Q&dila+_A~V&hwzC#ig(Mre>uWqY%MV*!eBE55R>Huw z;JdRt+y^WxUNe+X-0h0zL$0>xg6-Y9EeEPHlRtGq?G_t zh2!@nlm4uaE1#OK?E?2eHQAjQz3HsfAR8DLhyQn=+KxKMI5zDKRW28|n?dJ$qYoxB zj>mQxfIse?1uV?_*LY^|xx)-*T0UA71o5p_HWBR0@ox7BuK;vb0i`_XjM(lFI#Vgs zhE*i$oIg<+K%)Qa05`a|4)9T>sk{)CM(<1#_5-6Sx%`(Yl=Lw=!ioO4BoX|bg@MID zoo^Cw9-UY zdio)6ANOjKp+r-7Kb)r;9$`J0p}v+cLaN7_B;*?cm(!Q5pZ^97MUg8X!dArYT8pqn zC6mJ7+Yjq!Pk=AH_j1 z5LodUs2htcLQD}x=si-40QGTUkgJ!Ogd6X%RWJh^!Rl>t{%8TW>Z8#@od(8vlkq?+ ztMp$u>BYr!ixj|~{{V(ztUMqZuc`yjf+)A@(?eefJ4$y{{dh`}zLv8)&t*PRX)AcN z%x((MLfO`&$lp8q*IG>?z_@Lr5Rm^QzD-7VKHkwG_wA_r(Mm=YOK;zs>-VIXf`DU( z-yjk$v(Lk>;4rh%$coEnF3oggDA8iCS^dopDP0$0Idi45-A7FK#^psplZco ztC@E@bke@@qQ$j8uYdC%lIExP&(kx*L`^e$*`++xu*!nQLS_z1># zoH;(mJ)747WL>+!%Q8U9=e((};kGj{)|-P%l5u*#$VzjTldhZSvdRNi?zB|nd%?5g zz7>Q76OpEsmrLP*T&a{PT-$=K;ryDpaVv{R>S~nRuNYJmb6QaK7z3G72{s5Pf*{k)PZqI56I%$KvFf?wmq-k&Q#k_ zy$0-PD49AC9dlwa=KtxcJ);%C@(AMtdBWAR_>A$|v`v6l%4w72$M;xO{e|MMgdKVC zFI_Fagp-jk`AMEC@5Tx#rNvtVX^qI|J|dc=BYZD^-e^zQWhuJ+_7m^y_+Ur!^~p}* z!E?J18dCiC0KOP$w*K2x`nwhE+}ngWz^tcO)2Nq`AUNxBQ@KOiUF z_i)W~`5&}jD4u|X_xe-_=ed;*p(~MlAb%!SwfQ5y0%;Qq@CqVtB>&f$e?aJePRIW< zGn4enZ5w-wNb3>iInQTn{&v(^Mt=2E<2z9*hPXD$CbT317JGLH)_D28n>HQ}_*!vlGWYSxRG|wn8yUQI4WO9ELMv z19YPi=!`tuZx$RCJ^;bq5Kr*fN|QBra0zBM^Z*{y!oCP9ILdfv{A~gjDLN{({3wy|>f}*tZp6OmXn?2XG6ygWbaA;p3OI z3{=PRZh@n;nU70N5={B}B<7_br4t2U&O^m*9hu|rh*--Z``I91w1^%o_GgFMhQ>F1 z*PL|)s+z;s>tfH3c2}TDV~;OPdWUyEyZH3jxG!TE_*oat;M)r?z_G^}?g2ztKGm{$ zkYj6<+5$yeVQIL;kg$-o;kXyRw`!iRUS@-c8DF9y57p23lcIuhc4n?O-j|4NQZPp| z6X1-dt(J8=5iUYn*53%Vf`h;a4r;>}X^8Ib19WZ<2$ZtA-I4bA25?LwA!IiXQF|FO z@i8G4aQ+1^$lWKyV7a~UW7SIoZ(f4YwxpAb9rq&7TJ6>^xEG$D)OJ&r|0BQZ5uH@j zPjvE{<>Gg^Wc)+0pLBTp6C@Z4+j50Mo@A9<(kSZ`N?zb5ve*pMG?>${#PH&{KMh=y zMSzN#09e|P+->_KjzV6;>0v>h=4>3W&XwynqR*#HK7448eD=j!3ecZ7YB8A|Ai)Ma*lZ_k#I*l^r4MWHDA9 z4S$^_79cy^CcoxKD;=}nq?sgUPN_4Y@syA7GbEZXLomMCL>otXpD|Qb$8Dg@7hTE5 z9Z*MF584dXLv7v2PL-X<;7j?dF=f(Ca9)Syg*nCzrXMq={~kFSG`LZ}jcJzHS5YD@ zeR7ZEBI6-3xPsgh7zKya%zN(fPj7G1Rg>c?%PSOmn~68#;jYQyzW~na)lXn(e)wG@ zMUj0cT#)M(-VdRX40()Qr`qies6lFoLeD_R7IHiFUZC#SaYGr`W_sEmHN3 zS9iF6U_Zd_)dUon#j_y4p4W;QY&h8!euJ-7(ZGIs->#k84PLV;oxo(bb5qxP+QdU} zRsJVM90C7k<5hFShg<1@n;pSm-`1|9;ox}I7;2T%S~cmqt?kU-rN95KF(*m;pb(tsnzQ zpFmc{_fGDK<*oru0&LH$W=~owWua-1QaKc&l9MPIC5Weze|o|l)9Avp(=cCjk|d{5 z2*D{nuVA?^dg%z0ZGXy3f4(Iib6*)I$5HVbH3|}9#!Lgok`M6Q<`!W**i3;lC|9r- z7VCF;(&YGsL6K*q@C7M~a}%^N0w!b<{Vq0f>qAwO(Ms#@V06g$vm>zCRg+iZ`9{Y?6J0=hG^`P&}Ie}$6 zN}U2M>~^+#MglmU7dJqnIn;2v!^#ITy->AWsdVS9Ihu+CZlDX;Te4&D9Y35@9ncas zAc*Q2y{@jUQiowfgFD=_;hXUUl}~n$QCPAG#S5K^L_@6v{H;pCz&wqVUd|?CN7*NT z_TPMCo0BabR~TRYyUrwZjInuy4Le1s*{CM9@^kh-@p`{*bq&|N=XF$!9;NE$#Q0IT z>~RsV&Q0eWZa=?>th+E*rle%&yW2vA$=BS+apN-+uw%r&;E8WIFDk=CIS^lqy>Cp~ z_U8)Uv^04l*GY6;xvgSc$89IP?qnBfF@9sG^h3p5$q*<3*vyIXi>d{LaYh0)_RAJU znEV%}uQTEDS4foyl1Z>JOZLWH zx-lp?3jO@}jiP)*=HhyM%2e9q3cai@h%{n%Zmch)2Gja089jN{nVQ5_w)qVRD6t9| zv{WaMgL3mzOpUN0+!OJEu=7CPNP%M38;8Xz*K^dW3D-9vVQ=H0U!zX4pHG+tyUU31 zhI9*~EDtkNt7PL%>8m-rJ#kd(4@E-rzH<)rQx_nl>wX8~Nv_a&{6xd##xoiWiZ9~1 z(ndDYxR2Eg!j(g64)@m9RG!ESJ;9q&f2o9q4wEt^yF>%iHxZKwsUidCTXJDNOS9utSUZdTymi3EsfjuIr0*mU$JNxFRoNkHe z>?mJ0fIceP0tCAn4qcCPClXF$5-goO1a<~DOVk?;LZ!K^AE!VfQzvE$jjDYqJr#B#Am~X9wyZJR>9Bj> zCOOY#(%+)>~Skb!r z&1vSbMssR>fU@LB&GV3r7XRHKF+Rf72$1&y;^(_oh!|P4_w`ebGofWce;s7G`O;i} zi$i?`uNKpDO6t2EJqK{PL19O@f-a@%1L5Xev1b{&e!JOmQU`M*k<3xawh@FKE#ZZ` zzKZ4Wvt6X+>VwYM$xyOYD1lb3hquwsR&%YW^0kiWG@xIcEN^#k&oJ$G7Kr+oyNrs9 z%_qyLSWEs`_!jl_mrwN{l2Ae(L?VWAYag^%PqD-j(h%^z<_nNSR{Zd#4 zqJ7rvH%fM?sUC^`>%Yfon=7BpOj$^G!+kyHy5-ga0if*>I6JoG4u0deU?lV245rgI z^~F~65-pF_knis+;2$mh8~za3J<@_{XE#63oZWXiN8xYW&}|W~9eFo$9uR}QE(BF8 zBG1!)P^bP^t@uwu`oD5fXu;w0dHEIPJ_OaJUeB*=*SJaKp(G7VDIO%07kFtO%cR#$ zBVG;UKQ!0Us&YzD?c61UeKO@Qj8wnpDU^q?kbHeNn^( zL@cFHdI1s#g|C`h?Iw%8>0B?qT#5y@eRn!5g5M4%V2h^(v`t$YWmVt^A(R=c^h&ap z6=>CrU^C_ELZ$>lRm~q;0-q@Nxk`4Vj8a*$U-X&mGLFSC&b++4ku`@t-i?q^SR zhTtc^fi6JnC|uW7=ut4fg1SzEhQS7~t$r|UHwsiey0^laTC9g&_zy$MKHz|DY+S-D z0TIsw6$hl=_pbf@G`rvxLXhPDRGbSZoKe{el9qumY;tnABYEZ3>!n=nn>$Nqd$N+Y znwr2}Q2y1ysEPYFIXmP0gN)?rhaMw)D46?$na*I;ak9aF#@EK|iH#-XXB7tqCCam@{E-_@6NW}%kZ72Ld9_Ip@vtyt;sNHOzMHU-KLSpj@0GUue z+@W4!VGeQPn~%o-y9S`|(is6Ct6+Wyr5u7@Z|DnG+TVtNDZq)#g4GGPiL{-PAxcF0 z#v!2jpMzq9kfSoZZ)?`+8!!El6`Zp=#_u5o<F>J$I)-$8a7)`E3T7{6B@(XodVXW! zN2>n`5C@=o*h)nuqIBS^9j-$~`eo2#3728w_roIuE=Z8WeF3IU$w|S#CMwLuDe zZ&{Y{I7W8{K{p1NkvR!O@QGw$%nF6KDs1wbw(@y^e6fgXR#w%T^-F~;=D-A`FppS| zY&ib5S~X9m0qU&HpjxduPQW(IdvjLPdf&Al7g0KQSVsWDPw$S<@>2>eT~OFpjwi7H z8A`qTu<0Poq0y%N_=5C|a}zH25a57jWcVgu-&_WIU0I(DU*`#=yf}cAOl_jxEfmI8 zih9$v1AFA^d>CgOyL;p*ept1b=%#(@be1y-Vi?Cm=Czzw;j*dL*H>=ld7Pc@0dQ<4I$xYKsf<$&D@tzrRBL=XJRs;LaE8y zkh$I-wtRub67;K+3D;xx6$Ra?Eifsp-3*veT0uaV(pD@`M`4Bk(ckE5it+(m7vZE7rp}9YwpJ<=&r7K= zhyE9q+#-o;f2W-UG@SBr_|okCEKo7eAX)4O()oucCFR-NzH9Qy-2%QocSa)IEe;Jy zQ-$8*y;>;orUI&~L!m$e6wqFE#uxzKcjPq&^(pd4qN(?X1KUnK!f0@G#0XRCmayut z1*GRMU8uYEF0F0}KM`1KK_N_@je>9Lirnr5Z(haT!66&3xU_!%^uA=fQM>;Y;=$g4CS?6xY92r{(o%A>u-dF zw%mXK%5r^1D&n`Z4*V}ED3;*ByKG@9)(HNAGcNSZj{=Kaz0wo z;_1}#GKYcf+Gea%KmZotnBKxRI~ z_NN$T*j5MoVAA7@zhWB@xRtLV0YJzH1y9Q5k(++>Bd`9Wv4m7DzeLbsmxMH?Q2o9i z<>b*h6NINhVb&+e_h?Z$c^L^<3Nv6(acF0*7y?|h`BGkqjCNF$A8rY#R_g?!?MK9h z?_CbyBLQT6=KDMB-=T4w$zC*ITu3IPMQGZ-Ck37iwP4BBH^U?t5BqVZ!N-(MHu)m~ z9#Aa!3At8JzA~g&yof_-tJ;6dE0|#*`hAiDnB`JE{otJZz-Gd7;Q^4tRV!ANK>&}!%iLxo?2%Ik_P;OwRd7+|iZE}JMIU%VATei~jKG0D64Z~G zX7?Kfh+8%pNiY;@K4dD~oiX_>T4m{b5##b?s}?3K8iHFxK%J}R2XJ*o34q(<>g8s} zq`Y=kc>ToV$!S&O{qLyaAZsfm&Wz$ma3VDO04roEc)TvW`QhU|u@T7psN;T+j*|qT zWdbQ@0IEWp{G0D~q%GUJ@1KGRz`$!!Dyiw-qGRJbCt-j?UwZ9W8 zD`4HE1~8T-n1wi!7+c`sNW1FOIuCbEz@{<>_fwQl1u%^OIBrzj#vT8gd=#@421?Vp z^*$H_%BZNFrRKhKL1D$J7i@2|Z>M+>05a&t5{|+)ptxB;E|P5A@Jzf12Uj=E4WkQz zKEmQ5I3ZDq>*iiHLYwHYexUEtNrz_{vNW!AdN4y+(9AO*r$I-FPh0BmKD({!r+B>%pB0C`%`uE9P{02Rw&xu|&rxL{_; z#(}*_mUL?FT~AXkIwf3pP}l)1)Rhmy*Tm<_fc!E7%Bp6ACZHQ(K6|3Ic2BY?b5G>z zgPS>Qo6VsjxY~8=kxzN1)^zD7yep-BW&oTy02Kn7;5l?Y?DB;X*WP2I_G&Ux=n5X> z>CxI6`aLN5AQ=P^0yzWI6j1^C(~=V~o4Rf&YwslGVyN&f`lXbjHMI&d!sOUwS}i+Gg{MZnoQ3|GsJVp|xJulXO zD@Z-7jCTatuWW6zFk65&W&zB~5wWETc#}X_OytwX>#7)s=R#?dn~H7<5cF7#lEN9c zFXRzQLQ2t|P@eyklz81;j{X_)vwi<1gP$(;`n=^mrt)McP9V&N>N}vEQ>gb<5^4#T?Q_Gn>sphyHL1Us6l+Bc>^ln zAC(%!+eVtAjTWP;WNTAGxsyB-{8X|r-@%*clQPp9e5A5J z=&{FlbDaFj*2gmLES3+D@aq za`@C8Qf5J>*#wGQ7u@Y?dqMZY_(ctlbp5yrz)+SSZ?+@3CtO4MGomc9>u%|k1Hd@K zq3Z8PMemv7KW^1F58wWjgQ>atd&f-Fu~Z&DrAuQOQ32 zrxMu3Mu{OK^+1lWP*8AVNsCw3!L4Ws-!zVOMN+Er9L#-`)tHNoER+SYPHXMme1Z#0 z6@Rh!9c+_*LK76Ca1GAP(BlNsn3?4&#g?M_Ykz?BbSk-NPrn9yP~cC7iONnUBXKXl z#uYx84i?Pm_&C`u>7k6+2SR$4Wjv=@o&x(G8I*4h%g^;@q zi&`SCwqJUs{)#h^pgy6>cD~xcAY4p3l+2U!_2h99!pE@*lR3F$Y5(@LdbfC$Y7>B?CCXsCeW+aN{8 znW3|UM$7Y)$Z;v)R?m85Di3G>H?2Ch{&cNSPsZ7!p1cH{!@1|V8CjX4hq9EyOs??( zJL(H%`!)lqQ((E+!lXH_3QuI2PIWv9_3Jjm>H?>-(n7X!kg7n8kKXR`u*J}ajwW%m z*YuIr%np3>eO%v+{9n#Y#^;7cs$|Ho(ctpQ|CDR01U2=Eg?`k=Q_nFvw=1$Jp8~gJ zCb(2dy`_kOZu5NX%+mAf&m2N$O2xEoP!Qi&%70q?o!GSU^K05&P5S|5t+n^-4-Yf6 z@$?tP$JT-1t;Id@Nw*UY6e2K19)b-;42M0 z0Fgkq`Z&fd4JV0H?(`I-KP|~myCEQWtnEdJalN$KZ*IEhYZ#}vul74KT2Aqd>fPK( zzq$OL^-x#;xHN>atsg!4fH0G`QP&OT_Qm;}XM*l(iDkSUpldJH2dLwYUx%O=QkBgL zs!@!5KRqvw-ldtGHrcF?TFHaY{M}=1&|?@|f9liR??x8H7*&7W?@`Nk=%R=(%M{-c z%iY~yat}smV|G~OdY&ynsV6-}!?ia=U{hloE!5R-s1ogiv$)p}*gR{?6=it7G0SIL ztf{vtlf*@({mvIViwWE63eL3-p(0YO)o zI!bZt?I^fTsi4_k2V12H|4Z}1)=4fa)5-1p%c)nmIWGa;PG!Ttro5k#TAj-79dr37 zaK3h7q-;yqcS~X#=2T3q>9}Pa-eqZ^U5U$H)-+GGG3~v^SeW6w;OcP#ja5Q_$3G~f1a`1`2_eAv~613S9WN(SCksp?Xhpxam`h}VvA74t|?5o&aM35Hv z&}wv+69=H?mu?7%&6;vXKvf)_jH=BCJlw?te4*)WJ)GQt;MIKXqGQCjlxAiyZxV|t z7q0v=(0NZ$LxsB#vUD?7j835&M62NR))ge&i6P(^or~@$CMBt#L)9ko+UM|@f8FnB zXIG_@?fR=GC5h|OQ@mw$l5b&3cTUfc@x1no*>L%2qf16>Mw*fj5jK`fDZu<%G?{f1 zeU>rla~SQ`DDWRi)kR5gh6698l^k3m*#?cR|FvnMX=#Aj+M_BE(z}`5xwx zGA__h;i{|VS^yB(BkqR<3e95kZ?@bk*b_ap3T-2tZ2O%?PPze=>AuXh?JT<06ViZ+ z{!!z&_FM-u{CqvH302Q0S~^=6bgce*Ay7CYB?#TH^^nUG}@8{fiG! z1g^1%=8tmzbV~}+fUG}jW^jJw_ve8=@=Z3N5Tdy5{&ivE`BuQg+AP_w{GR4OB*<4K zps`7j1eyHVyj&|FDj2JFsvOQeFC=3D4f|dOu2|Wh&1dO@Ck`Jy)a3hJ34jQ!hoF$} zdY@nF$e+zC6@w?1uy8B*S2`L6DDOAMP4eb{HqWRAo|vXW0CA4U0Us0}ny zpUsCu1WJfTqUrg$0q)Wa(8-r0R!StlCtAO`MXmlwwsY&nOX3C?;qUow;P^s9 z5)-(BOFul9AKWN0DnJ^VK<2hBZ#rIE1@ba3H`T#zV2Lb>W;c8_mS_&$e3AFq=duc@ zG21Hv_nr&^oM#E8;=u3n5NTXiTvv@yVhU%np`7qItHWU=xCOj_mF7UsFbj9%tp~!{V2NQj<555zbm^5nUN4m3z(7E70Jr0* z0b@3Vy^BEwD*=HLgTojjO#`^#O%2eoDesMRY-C zKLMx7;8;PAdg%oI;hmly0o=VTkZ(_zLwDFP+%5*Um(o;-p1g|Gawq~63%y#$Te<`z zkArp{Gmy3If@BI|q7@RJ^?}>OBOMqJR9XmaqkrFEa@U}l@>l7w#;t?z6hk@2 z$V0`#CkOM14p1%N@^Hxt(5_@xV?m7p#G7VpeOUx+Ft}ZPHa9sV}E#|mrzr*{W0!K#h#7@<(7NGG_M&TzB${vYl(1n9_ zE_>xF`RY*h%nB&Bl^L7{*Cl=et&h5?;ENvt6=#3O{a-Q_h!9E|8P9fleTsVl`4rW$ z0SuwmO}x;ZhZW5H)S`9lVaLw!GhpqknxtbYs7wK4^egA4b+M*@Fcs>Jg)}R9-+tsr zVqt|h4YJnqAE{zT!q{-w@~5WJ4d9lP*{n4f5Uu04I|lSdD8HEHDtPS(%!B#K4#E)` z87|w_dUlj#3$#-9BZzu~>a2lMHj3d#@Yxw$gcy=()NmK1M5Y>!WA@UwhPrQ0S2I-!?M{6lgtPr(Q(2wohE%D9WzQBq|~c3RR{e#J94MQylFq% z4I;H(;gWEb3SZ;-N)ROvl~ib{!67GT4cSA+*gquQYEZc(QRi#&ydl4Qq>bQBPfv(m z5YPA7Ulre=@LV4vg_uJ5L0QKxNLa^K`g|(kY*q?GfQxdhCk(o5XHeag z891L4VL+iR2Z~#j9^q&usMQ&BFnemZaIQzwJe$E-|-xB%bIH!QN+#6x0futai*#cd~7Iv9K^-Hbu z)-seFO?+q4*kOr!@WR_=0pX6p_oYd?RQiZ}NcW-(xCG7&lwq%m?^hR99GYU1~*(jtJZJ5fj}k$ zZMPNJbD-Li-3bp5?rwipS){Tdc}I_-ba9Tu2hmE^cR^c?S4lG|$t6&*=|T2Az1LAk#-ubfJH~A2IjI=vY)kMS2r%2%;;-K>-dvk(Kk8K2H zS_POwz~DR8O6exNLM{aGkQ4)6KQtWA8r~krQgaAW!P~bh9%zY5W$v zQl&R70tHKQ=HLkSfj`>U_1|4;tN}G+P^l5O;p=k3kp6ojb+k?%nq~E z;)r|7R14i~WWgrYnQ1*@oLR+>-Ad>D<*aScP)imb!{=Cl3}YC&F0cz$QC_*|qeNHI zFZ1i?ZU`~v%xS;NV026!S5KX0^=xlr%xF+&Qr zkM1)uYyLm%y>~d)fB!#RK9p!65*kV}%1EThNFpR#vS&`SG9x3(3fWoNd#}@8sYq1z zCQ{~U%U<{M)%W^b-%g+JeILht|MmObzw4jRbsa~C_xYZ$*Yo*&tdeHrhV)a1_CY)s zFVOme4RnI`|9p}Vavz)T;mV;ZcZ+4PjCoH&G|kTTO0`*gs$8=D+V}HrKYx&H4RU-j ziwlwFc3>1pTY0H`Y5t}tR%k#(;4&q5`m0;^c58fzF`?51vs8gb9TBEux%lN+stFW! z)&m5EidFVTm_Ugyc5xjS-$}f`i=A{+7CDe(KJ16OPg9s)*+2_gdX1ht^!aEi2UcMXbs%nwfO8{{+LV1(1j7r$75L3*)< z#V5w>(C6;qFM?iAwEG`iI$Mv`PdQcB@k3bPJkrqHrn^!%h%a7Zo^W}x_=VT@s7^G@ zn3LBy+Vylm=*UvZ&|ed$H7Otul1Az$%^B`y%&W22DSetrPJ9oR(XgtpPh@6}m$_S33az!Nl6b1`F!lBcPSa=kt&TWoOy&qzIgZm z+Bm;>#A%D#w>~cmJniIPHRueKl_DdaBSfd(-Bh4F*g|%6Bx}gye0_Us_V@jUG2(fe z1s%0xIqMfyvCK49^L=ev1tSTIJa)2 zfA=$iG0X&$fLrxa*ZY#u0Z%@I3~!EmM@Fjldkwyx;87Fg6N(H!fAR~{Cy~mlTuG*D zDZmRixA*gXV)W?&?d&k}{?9sIj$0ngu85gKy77^e)Z{*dR1_Vm}uSv2bW*Q_} z!Y6;9qs4(lCxbV*+spX;iQjJ)BhqzJ7!jw-2@-(6Tqd$U9Lo!z` zRlb6#%y!m%{cpSSzd2N*OhB6%H~oY!BtjkCSty&y$uIW&lXYkX$BZvvL_TwPwJw?G zZRnUpbM?LdKKj2o1uZC_;p^)+c#9=!h3L=17f)Uj$cA^?s9_XEkqdlk7WktZ)G~Pj zLqn8MstE53LqAD|QWXAkG5?!A8O(9Hs^727RTrmXnH%x)gmrD5A+7B*e0sg#6876< zr9K$e{jV2?*$@;F!In4+v)#`=7)>NpO}jx2KOt18;vhi{C8q6t)D8fgrSU)jNJaXf zn$jG7Tzhp0`~`{-UK3^eZ6aR{)ON_6e)MaUn$MKws9dDMNG35q-mB_DfgIVSeDf!g zBUORIm$B({N}%kuvA^o)zwH7BR6JrHG;Qxp4IHTGu-yJQFGD(=B+cKUm>O)LSl1e+ z6Ug|q<-C4lcOd7v&(6X5`uXQYdRS`d?*}r9B+DAL#7k3%co$W#bUFA93Pf4X%(9Pt z8@#r%PJ@jQ6tNV(H+BiCW2{xGhk?v#8~PYAHj#G=Jkh79-bC;r7@P zgyBWT9jp)|5Ou*EKxyE4d-OnwrGC8jW5ezC(-Y|zlv(!U-9O=dq`B^5vUCSr zt&~b!I6=gX1W_|Z41XUeqnS>|1^1$$pZD91w( zqZwb!a6JOf%7sGP^M1-nl2mP4vmD^=e4`drv zRlyCSpN|Y!m6jj*c7Cd=l@Q)1D!t}z2gWsZI>sRUIwBGpK@D#P^ zU|pFBI(cOD5Z=(lRtbcGWiY2HTbcM)Ssod`0I=oQlh4JF=Rk7>WCp*rg}^B~o^1wF*GJSk~V72~LEGNdvcXK)D(YuF;vT!Oxp7y43<@ zbmZl+;sJX3CGq$&65OE6!wsa;LIEcmEAZ4WKZSUVO*TRNxA-IOO1Dh(XrnDjB>HL22!=@B}lgy z!982>yEb~9w_^k{P;5+efGEH!o?A2Kz0>Y_uu#E71p)UU-K1!v42FU4hx~P$H+G}p z=7bH%jl!fW+uB6)#J`-dE&foUG;-*kqI{IEEiN zUwz6$Y(Jp_7&7SA9MpISl@(nc`3}*wRi9T>m?tnF(i5U3iccK!Y&9>R9<3t8dFMKD zC*5K=g%GEJ* z34eZ0A4GUOPVPlzQXv&3=k1VR)QhW$95t#6H?=mOOPCm8KDgP)N`!Ee+>mIKm1mUR zd%)@Yy+^|k9%QZcZb`i@uY)ie;A#y^-W3Pb_6Vcg9k6$~=QA1U?bZWiOkwo9L7yIcK zwUcAoibNNdKFLOg#pf5iwoDhrNbj>w$IO&5!b@3ecM(JA+J~*Z)nN{I7MNGGULx z-IwG-rX9WaMJHfw{W|YiReynqy7qIxnOZL~*PmC2YK5}X7$uPexjJ}OW|}NM(VEGj zx5z9~dTTJ7ep_`;L8}M|7xcpX1%%GruA(j{vu4TfuyT}GzAQ%K?B_k|l{yO}PnaJK z4}O%{KVOV&6>U@9czH&CB47BuG#ZLztb%S6epZ|Oviyq0om{dEgS15u!~J$+3E8PQ@{SNV0=k^{Nv8R}6O@ zQvBwBy072}2RmF$oY5N}Wjd@7w#_`{y#KF#2Xj%3&NOEM(BF7ZO5%#!bF_r2?B3vG zHvur)mJ`*8*Eshp=%P{A0XF(@X1`92X3u?FZdJCk-^?53rS*{O&_HLT)6*_}gVi*$ zZ3VOD;e>SxM_@^pofMPbQqp8NcwQ!YYI3DKgZXM~_4o!4*SpTFO;#xbu-(f`&Qe?= zT1SaQ+^kGtl$aL9<80r;nT<$Zxt>!k;Vuz$x0#WpzfqooX^|?t=j~A!8lzUVy7E#e z2a2M;OJWKV?XOU!2QTdJFqAJ_;G{oeqeOG{QLIs!cacp;Dn*jE7Sp8PY8eT9LC4sY zDkJjSAvA_Mwe@!B6NWC8UF>!8qs&V<`+cA8S^22wT`s-WYooZ=Oy==)wzb6lgb+Q zN3uxcY?WIVRX4c>&AM~X9J}gOonl$((Mc_rE82#^j(QyXUIC1={tcsnBfcaDl5^L7 z-PwFv8?#|ixb5D#(2NOO6>O)ZtQ3b*M15IwHX>Chup*@Hwj& zs!qKY(i}86e4O{wG6v3QNUtvVk86qAXf!VGBz(^P#=6?qJV?ZwNcgYTllg?pn;#pb zDR(6C4F!KUrmd`RiG8sP@=xSQF_a&GQT7`5l|yHd%6cR12tEo&{|3I*M|XcVknPR7 z5NNu$W$40-FVqh1diWi#%Q#e>=lC3NNbPQXh3OOF2>!DA_}~v}R>zUy%w4T!3jAZi z2@r!XG{ZT{o_`*U4>j0r)L26N(}ZF~1i(t-1Gn&bP^d`pd<7>k{)>q1A2-6qAC4v> z5^(4r2a89>HvhSt|7D+!>=i!gI7VW6e_sLt@up98UBgin2ks=~9L>|8E<89r``A(K zfm!IB?tg8O!Q6YrFu~YUV~%(=KRoq%0+_MfZ}zGXnIYh}nd01{v|UH$uxJ4N;B(lp zImr_K!cK!c))UJ8>O9D=!u&bQYNB-}1u75JG4TTz5Y1n8PRWFgp*|Wxq2DVNsf$f} zbTgE*^1(DEsi95)|8;j!hndY!f)CT5sZ~lXl1^GR-&jT}AsDibyV4-Nd(@+M2W;wS z47)+LwzwIHy3Vb&Cg-nkE>bcpB>Mm~^%=Z9bz${S?_(N*tCyE z$#3!@nAvq?-fx3CU6C@z!o;I#1?ZvOf*VtMBaNZO(Dn6zes1_-4>&KI%?;Ib?rJN$ z9Zx3O3yO=~#ak6zJkk72#iRL6{LyZ}((WjTW20-KHdn6&2^tpQ(OPM7JLoW`0W~Z{ zjoY*5t_KT^JMxi94CEPV^BA}1g55>Q>8P<~)44B{pPS#sBA)MW6(s1@_=i0ifMaGB z*Bf^SVWxo0H6aTa0K*CqWfcV@sqjF~h-FQ<6np6h1c$(rwpK88kYy+y(<6F}|CB^! zpRq8JPf9C8R3!3v=PK3hBiz0_n>1t6>wCI<^<@S+4sytL)Z)bTNY@O z1S6GTvfX9qIEt`gqBH4=X~XPBgtbYbn#KU+ui}p_&!T<8)8^n8R$3Q0wOXab z2}ViO5))m%V&0FDdVTSdw2a(3NGPG|(z3HF0{P_Va~f6|(qLAjU=R7Qd=$o^utD`k zC0EDL`(AIskll2!E~ks8u1j7KQqR8CwqHkt8|WlM1{E! z)AG)7GPEh#A7I(4s3;>2v3Z^so1V#Cq`#mq5% zy+eMTg!2h^0|jPJjZ)*yamkQbJNe9sh}VL99VfaD(*vk(;r(nq0xO%`*;E4FN_X0L zf}OV444wIx(+V%RCa_pBOcgY2An;q`wpHdYc(f%=P`q_HjwW3!Oo9&8y!e>!XW2Os z1*u>~8FQAF#ZrOyj(Dq0Yza}Ag?zt&@Yb!fxw^F^ysaV(?BL5cZbS7OxOqBLYCd*k zkeH1kJ%A40BoEZM5D~JMjh{uQ;Sh9Q+Co7Pt6>bw*~O^>R?)rQP`iK2E*U1_r4S{3 zYTVlh(<y6UK^f(&8A^qROaTr|7!Ez*u)x#)%KY)?yKzd%R?*w#LYEF5#88ZI z?yVJCc!Op?G2x%7l8byb`{CnGweM4_h^9qi{fV&2wLqM_Q$xn+JH@P3P4 zgq(udqligQ->SPGLQ=sXyF6G^X(g+Jd0JFa=VFo(3{fPZq(SKKw zBY~H9iou}mztIlT1CbmCXLibIk~3pXN-ah*4H{qDK=fk|h*{n#2IO1^1BHB)=M5P8 zsDnV$%|F-JXTn7X0OcrJ!VEboXR8~bRapbPSY0w6K!Nh*@mGm&gs$0iS4?wZx9nkCG_{|$3Y`t;))f=YTq2X=85BTae@O45Q&Ht+4FVU33{ z^`hg{e&&1p(mUV8aj;;FyOIv@M)sx%Tkt#lBJbca?FNZ`wwgC0tNw**^!FZI$5nS` zq-s`{X#l&*JmMqD5}58QE(WNkoMQq2leN1_#%3Nm;r@5c|MmiS?|vUv@=Pc;%_rTG z;|be#6`L0p!RYzmgG+@YpkvPm0|pgPp-hAG|78K{n0KQWKJ)$P^B=Fc6VCND4ycBR zrBZC})fAe}mT@n~W(H}~n@(*Yff!lowpN3rXKJcr{bXZ&X8=TN>vfNcN-bc02OcZyqw28v!7$KqMq_sdP_B^y3LQN;w zhJA?!*hnCcl#c`8n3K%Wt=cAnvsg{k76Y@wDHwh6!W^CF)T^t*#0qmawH88PGC5j> zIYPtrVX`yJ1QhnM$i#6bTC3>?N=pZlUbnPgOX#9pf>;k=G3wDnIk{^j1z)wd(q7s2 z7*O+rEKOZouP5ICu>#AcN(*l_4S>Xt-T!A}4DZ9}N+@B?KX_!P6dhFj!1~k>9Ql;>4O~DM_6;;^je+y0H80=IF$Bt>dG|74Hs$2hWyy)pJdUOGgX^Yq`5f+{V?bx> zGghVa5))dN#}i4R$OXd`2{sTibp`wYp#mDyRnRK4niv+NItcl9S=ZvmLT14s#L7CA z-na8AkWZ(P2y$fdUblnWeZ$NJ|NTym6htp6n~B?w5&2LChg~*&rKYW@^htB?nbUJ# zIhtGP&)Pt=IU{B??&Nn$z!WTC*iFLhQ)FVy*H<2aS)D4}!z_U0<~ttYk4iU4DS(*K3Q}b4dK|s>RYR6$NPrW3bwbT#t+5cL1;{gx@FTZYz*4RXA_b zU^$apQCQ#@=rsDr04R8{PB87<&d!#c#&Y4b!<nmd0R(`dJxQJ0X z8s(ji#@wEPVrO6~KA5NX@vvHzL+OUd=@SwZG55w`I`tsRt2baWBBvb0TkMfSGE3X4 zmw$qw@)FS{Y)NV|4uh=&-D?mwz1EvLvd9MxZ}#rG&ZN>?eXzMPxAI&U;ZOB}7?P}{ zfLvL2eDVf4qIAT4t#?m$SQ)UL;lV1q%R^H!kRrBcRgQEK06`tA$prHK9dR0Ws&Q*dz^UA|- zQ^&S_PCrg?(7_1+!#We(EtfxEZbG2qK&n4n(})TaqYB4I{FPaeFwBA?B)Y!YrUDe3 z*K8PCdJjv&yPC7n-cG?dBJ~>k)FZI-#he7g4eSFkPPZ@j!mRhAk?kg5pL>-GE@x9!TfU7Ax!l-ll{<~Amp{b(bV>Gw z2Z90;f9*5i8wpnEr#+==rRW`y?x-ruT^05FfzB{eY_=Z0NOJu;%)-q*sI$c5G}OV* zq`&(xyZuEtZy6JJtC{|uY0iX!I~3A#a)L3G&zhP2k@YWI85-4;O|YVPpGJ!0Z+rjR z*9{coDVv~{86HS-ujq42hMuE}b{EuJk7Ny|U6d6%$PnGJ1@T`kH`Rg9oBhbFI=z;; z@ck{$iR&#qBlB%^o1Iyz&u=K4#-4gEMuQ1GGW}?H))Q}&$XUA*Qd9)n?mcM*8Om{^uIwmMcTBLSe3*S9skiHGn8a9>e`W4Yd>guQ zxU=cf-{s2ht%8gPnvZOaTn1y`c!66?xggCdE=eSy6ErIGaM~1!-Cl=AME3@mVSd=P(RAJqAhmw9C7rnWxSmSJhQ$-yL+Y_B& zIKefF<6SGoM$T*YS3lj{t~RS)eH>`2{*_?wIv*+Dr6W1Q&SQHokmk1z!YuBL)|tKy z$XKg)CWfK0OT_`yr;JK7lv}oS^$b+cKNNTV=&e6{%`vLdF>?IN_^c>v&r{#+uivVC zoeNB7O_JYySh+fe_Z9tSK-ocU6)=02_ICg^-u^ldRo(EdtGkscdtB;~w}%6Di!fdj z{d=g4z(S69*YF+!I;f~75IKI9d+x(uU*L3vE1(K`LjLuiRpkQw{@KA>++_HZIQX4m zB&YG-wJD(PH~{_r8hboG`Q!I>a=?UA^M&Ol{bd|AJ_Q--5ToeC;oBDXVLF3Xo&vx&+A0Drh@oCkLLf?qjAZfr~dtFk|@NE zjbC%Sf5PC_eQjFDsIN0LUBw1`-YKSkACLYA0Pz8jHN>9(`hUkxp%roJAC~K?kE8qX! z0DR571D0P?lnqlAb3`!JhTE*S9p;yYFcvNbFVG%P(YoH3Kh*?2X5g8@iR{o6MlXEg z{bNu*;&nz&=tmTj2-lwjcwu*V?U?Hh!^HjnX;L1xJsjO-1+?&<81QkZ5G+#IhR#K` zD_bKAiuPqd^826=H642EvJ9iunPA=?H|Ssb+>e|#2k!@o*KW8q%G>QtPsWZ0ef+Z# zp=Tgcp~QxjOSc^Y3y+^F7Z7s)?;ge+^)OSKVSh<$eUhO+S2cwU(_r5>MO^`!Uk)hG zjey^PxI<^+7!|AHquD_2zjzne{8MA*zw$C2`E$h(-bVs_B;6?Gdq2pMkE+Xr}t~2$41SA@SLC@(UpCa=aLG7&tc@r5#Dv=UI3SM~?K>aT*Zevh zlAaoX`D9JwObPg=+0+nGtE4;K{TUV6@;4tVghT6F1dquBKhSvIwYJ1plzYa*dPTh4 zfD9-i^`;ntb^pjyP6>UbroP`OgdFVCFezUVayn$|!y$`9ZwH)T%jO65E zP5r^3ki5 zb*!dz?}Mo_ouQDl9VHPY3L;SCsF-sF%z@QFh-u-j0XKNwgU8BZCNKfmiLGJBFW)BV z{IY9DSK6EWMigs^J)RO+)jtbH^vOh`kU$`%ko%sAZQBkkAIoFKp*tP8eIV;`+#V6A zBOR|~fI)h8QytgNtgv&|X(6WyG{8mlX5?owjdW2s*FsnRO+a9aFkA z9o!*DXsbU3j7;Vi0viXM$eM9&57Ek4y^lM@^#s1_v$29kd&RSQ9)02IDq*23%RYH=IH*%}u8nK6 zGPh}cbKQsIX4hu>v8=AR#FKY|LAJxQGU3cJ6v%93?9~eVu#j<^=N(f*h;STt7L)hbziZ-Ot zQ>uBoZgfWTa8G){l;WXkmoUQ_;RJ!4r+f+xgwlsvOiu|dVGhbm@8kFW~DT-4){R50ME$=Tes+4DpmmMQRv2FwQ zbkOw(=cab&*_gLb(oSo~w~!jAh?!t$y_5Oi75)3VY~Z?xj$^akY+PDIa#b@J1Q{pC zRd)OJ3f({C@N@-ZGCRxy4F&(#wkb5S<-<*1a0(?mra541dJ51XFDNe2pD_?li0rzs%y7tOS`F*9FV@W#DvKxcbh(HL5mYZ`UW^e zg4@UN8+l<1Xl-HS3T!0&P*(%ueRn3p^&}ckf7Ee8_6M){CYfO=H4dBl ziBIN}d;xckqUFnkorJHlY;Tq0Q+rnC7xJX#zJjs=tn~8`G04-o08ME>5%=NibHe=K zN1)raXwjUfC*F4CpLZ_#&8B%x%MKxU7wc-2+Z4h?Sq<@Jz~ikmS(@%C$QX3Rke}od zBq2m;*-s?RR3(e8{uHinr%z4!bE}>WW9}$DRxgzXb_zHpa(la7c%eXy!pOz5n3j)@|eNrj8d=9 zSu2Ml$p+nlAB{(F1$K)M%0acC1%|)os&YUhQIG5h-L6F4(l?2%L~?psqXP2*J}s&k zy!TC5AI)}(OkU>bsJ@VQ*(c4^LcIa>hx-VNfZaBkV@p!}lwIOUpc>DtayYMfFHN*D z*=$3se5oN!!5;uVR01k7yJf_xhCbVHQ9(`dBlI;t2#9H0z=4EX#f^kY-A-rnUS0pB zM2FZtxuMX8R*{%=H5YI2+$=9Lj;Kd5$>w{!g_a(u9>p&$62wrvBq&W1kzj4)ex-e3 z`9}`CMV`Ka;LbHKi&;v&J}hP=RW2bDObWB9*0~0O(@Y1wQeXJZ8^qHK^PtM;BVy#v zuVHcw_y%3(6ojAUgRrXyd7_*2m*k;zSEz%C_#wGlqZ9mmV zTtn7&MSD={<`55?PdYgZkPKBXhQ)1+G=vlc-R1iP3P2MGc2SrM5aGYO98I#EDETRx zblJ~F_rQ#ge7TL;y+oV)a;?LOv~HJyX!sP`l4&pkdEB*z7wbW+?+S|_S6t}XRxu)O zK(qt%c_Ol7jVNio=7B{vTCWD=wl+VRb=~P|^$n9W!RJe3NzsZ1lhHP3ku_XMTH07oHoq(0R^L|a_Zrg~2g=%VKK;yRTN!t4VJ zFI62<)dn2he6=eHOlPu&oZ(R_4`m>2AUNqq{RwaXg%Xz&mCKKqO*+;M^ zvje}~!zE%osELxWo~dFM7<&@@Ro1f%WGnICZW@`#6zM4~#B5)EGQ+jGe!=Mr=@!op z0PY2m=4GE8bp!!9nu3nU_Qqbe+n^RfaQDh8nh62^=)+c)ws5o~Aaoswhi0W6L7BeW zQJX16z8z&$_Mw0wmNoWLiMCxrvbPwv&QX0cKZDIdm!>hH=PTB1ElW?vRvqTYsy+`{ z_6po8FFNt)?Ot=ogIOlfs?)k%GVi|%EV1a0EVVA=Mec;VzZ7tSTf=jga#JI=9U#dm zPkRO*r!z9rhRs^5JhUP>L&7#Rq_81w@pOT% z;-fiZ#!Z^Q0V(C`XbEM%8I~mD9}llN?PL)NkH~>%&>+XYSHqPA#T2Jl!^j+LV_2r1 z){S`!t&9*kp0Xc5!w*m*Xw3}F`FxuavaG=A(JB(m+ekSl%GU2PT;`rWFUP-CV7K)K zOpc!ZOg2(mTxVV*XMRlZW4-8enC6yz!>R8VY15ipTHY#F@Y zohG5l0$2<=tps1yIgP{nF8}&QBKZMy`vNUI8c0U6(el_K9hhkoOoDI~YyZPlxN#{Y zJ;_nDv*x((Pyeq|U)t{oV$UIVlYxWMQF8Kc^&qj5U8OC5WL7I0P;7&BiF*x+9L5t| z^~)9oTRY4Jl{-&_{$9%I6^JahuL&p&y4nDX?XU|Bym~+cV~k>;r-xgM%+#oV*?~9G zG!PLBP{Kfc6Ta}@--y7cxgL8ep_2FoS@Sv#Z4{aV_Qc=v?pI}qph)E53G_XFKt+;Y_qg6oFA#1Mx&(Hjyeba)!6j2Yui$<@C^bcOj&oR=> zAXQRxZxBEK_lE+r$d^*kQ`a)eRPKK9==~o;cd(ZHqb86(7y5}sp-0DJ6Vs{*dAY0sEbv4wL>^Zfy3pw`->WB<x?FoR%4w19^v7A?^^A!e+=T9AQgP>gujo@XsmSD|$E>t)@Kl zCu{{n5JsSv`%JRas`V4ly2({J*!5wJ6f#**9S^#BL7OVrD0s`_p@>%o;tg*@Jj`5^ zV}KO(VZlwH8#I{Hb#xE0zy-Y1bu9Qzki;vi|Q)45%;{gR{c;qUD!1__8={H zJwPP~GPJ6zkRcuWYA&EyW4I*15@w<|z#T`o=?M61BVHTi8khK<7W$S|99IUCm&c)F zP+MRDN$NbgGs5BgnBn>+pfGi;-~WBjf2#~UQ=tMl+k1)o0v|!j8;h6F>cBidth00+ zC~QdBEkU;mzoQBnF4Mr1v9d$OFs%Ww(GHn_u~O@p{6KT>NqAm`5MS^yA0-X|d9k$H z4%q?%LHtpIFgMptg?k9*LT*fmwD?F!(9*nV-C@^=N)CBrc0|W%1dxxnCV7*d$LQCA z1@=#yYb~$NBPI#NR2iq(nD>`l`uK{e(4@=84yz}5qZK)4CFibk0g8arXYPjC87BTm zzx<8pFIlF$UVvK=Xp_JkoW_tq#NGOigCw20MKN$^qk5+RP(qd~Nerv5w3TtUZZ7#0 z*>wbyWmU$p(6338C}VKSSwY`}lFJUlz!rE$7_}nP#|b>xA`h__KVOq9n3@|{p2izy zF_Y}=Y-T1gn5<{rTYb0|c&HI`mD`~0EYpw#7T6VBe`x{0a<=TNEx9`HU#z`XZ@-c) ziN?tnH^95t5HUq3+EOCL9-{FlfFpF}F_W?MP06gGPx00fVYvgGA_=L9X-p=BP#{fz zGw=gV%0v|Q=qKQvO@rycovZeGDf>m#k@`aeqP#kx1HpmI(^Fj-LL}Q@R)WCwa8RSI z{iw956}?gL04Ut#^Q0p;&!T` zp4;xS{%>UuWb#hG!k~?{{W5PsEweU6qWv*i#zbsO82-YyCZKv zL^%xzR&5PkT+#qLHyh|{`XFLpl7JFbk^L*B>V?8Z)Rw8d=yw7Gs@!!(oYFy2z`LQE38ZXLG%inz%8{2BjC z1bxL1{n#4P^!0A`(k(28b7yJ&?+;V#!q%(+9aBAyWtI?*YzeNIEV z`$#b>X0vYE&f8&N^w4GsfPonM+q;UXS7 zAe)a&4)WI{i=_*m9oy3}?t>6F*lB*+oNVDfl9dK)`WkoF-Ff^^kA=(%7{0`wBPijOas@)-6%!KK)AlSnWCDorCO96!UNkXCNC#`LUu5fPR z|32tmLJIV9*1xL_Wc{OnRUC)uwxW38&W;Z{r_x#R=^FmZ2)SHLZj> zg7>2N%Rb}brpSMkmq?PSTG-(GwFKoUf>iR7J7f-jc(nn^H{vI)gOy_7+BG3R4LhD^GEOnT5FN=m3SHyb!ivDE53jYG(9L1Jk zyc_w^5}==CI&LiIDIWsve3{L(F}P02AeP&C+S`r6TDg){N= zD~HW4TycS3;N5Euty39VZK5!c4PmWyrD;gfkVCz}g?rgP0-!$arBJ@%4RvS>wmbFJ zbC%+K03seBEii-=@E!Zyyr`6}c;HyjkE^Bw*G>)N8wo%&0GuP+!_pT7T>v)WoQRLr zQA>JO2iv}G56>Ze7>r$k@K0Nf8}9I&?*k=9&o1yJVWWKPt&x3Q^S77ZRBQT|InwN| zFA=*u>02z@eYQtn&e=2iB@zu`&0Cte3>vz@11o0Cw)1SPq^ci-DQjlg`%ZB|{6{|k zy6y;bod)rtdoCar>;}W=EEsvQd&X(ICr7VpNG!N2!pokaR-CQ&lwtKvay)`)o_sn< z{a}Ef>MIf6(PG2kMWQ@67z$_ z1XM5HuE`r(WFv-egwwU%HIu;{fc^M)t&7|JS}STv>z0nJk6IuZv^z;V_a^nC{ObkW zn$YI=BYd9&C_;h;%PcA1_ywgpu6_M@VUGCE1@GUAas0_6dH`tv;v_DAhin7<$3YB# z^GuA8-|hULs~FnVp9veo(wF8~@=q&Da&Yn^uelp1vHM_vYQoWsPtV{Z`{-bV2t~?O zz~B$VP*IQw_Wc399_9Zy7}*Ut0VII`&*l6d{dAb=YOb_^m00~*REp@g^ighQ_~82T z$1fy_{jp%d?n6$CcArZE1kmyo0$nLNW$qxWHLSixPv(aY8efveuY^AnW9D*V>xsZE ze?J;vKoa12g8}Grieabuh;o2KIi@UGNDuW_fN%}DJzsW=lL@wR1l^{WIn`<}s7Oo^ zR~ZoVw6_Lp1jCh^ORG(*Wrl#fz`9>}&GNVe`NLW~_P^*o_(ZHWl2ue~fE}ooCZ99~ z+N3<_@)*tDgX6&igNEQdAoBGBhca+f%1ZCQ-6%EU`|?cw5NJNIWt+0hBalBa-nat@ zs}V$<R;~=k|5>*g#!l>8|$(|#l0!9{u>ShlZ(*S z^nlQiGBilxk9!Fd!!juMbK zCT(Wmk`Zt0}&5WO_q`my4u4;4!AAa;vVv z4itG%<{2ZZ|M@caJTA$JadeUX&QNnb4Zp==-3AKFzpWWsJB1+bAOk-QXDD5>piKHb zkK%Ej1JJ6hg^mP+pfl-1DB)_$Y$dG-f{iuJef`K8#8lvA$O1Dic47)4-CK54n?_JG zl2XD%#5&n#e-OtkB2F$x?6ZV9L0$ff$I?HklFgMYns4mC<_*XszcSN)yk%B6n5esm zr=e28$E=Ndj?TQKM$GS&8R7uzv8@d~KZ3})MQECN;Q2`y5S1a!9OXqKSn*4=K%X>S z3*~Ddvo%YGZVR|4{~;m8#TIfQ2`LI499Tc0sx=J0ceyZt_&Dh&)LichX~n%j@6QCX z+A{o5S*+_q8k<)u(gVQI#d@!==nBu-n>G8h1`!-x{xeXj-^%B=on?mE;#gBL5CR6d zrGNbGqgjc2b&}tLQ0WyoV;b5ZrZmqr?gaxFRp;ef4KH+R(|plBKP*dWYs^x zpf})WxM6f2BBZcGpqT9}w(YJZ1Lv>W9e|0fO?Xy4Ab;QpwNLZy!;HSU$nJ6)T=$9~ z#N?}?)OuO~CDhxz(x;KsSwoO*A#LC$x8%9|!bm5ZOn$^mER30X4&c;2_>l=$4w8}+ z*6ngL5n{S1#rRrpf@RjnIP&w7$oQu*V}YtdF89_nOsq(Jm|0Y;z`3-SDaK*=>+@>v zvYTC0Z{}HYvbResI;Dl*H_qc3sD#tcZNxNQjw{6G-6jHx?Flu|Odv^a_BR+{mT}-n z?h=Y0Srvm|O_LefnrGUr?T3<})Fb35pEvF>ZPGUbL z4yJqrH*dI!P5?33GV~}Bx2F9BWATP0=ka(WCi@jgel|!MhUphjwZ|WT1arXi(8#@3 z&tr^iWfKZO%MWB1OOF-j42v^dn4H9YG8tGvq-WrfRwy6-z}~Hc@5dYs ztD}ItZ@%u8tZ+{4pdx=FW_rJ)&XMy(Y*;-{SBA8}N%@7EX8<+IEU_SlhT}eGBS+Fg z9=QdVSMb&ih#`AO>+2^CzJI}t6Bt3TV(cYk;O2v<~EpdqxXKE5BPSN_tZ$zjb zy<^X7rk63Gf#sL%PBh{sd4qZUwcWT_u-~p-pYCv!^_*HHn*4WsK{Y5wK~u{@9vJAy*jX=)j1-y^ zJ*n{Jc)siDrK3%z_cFOrXtMbU`|&t)4+Di_Y7{4vl{XK_L*JWgmUk4c zQWCaY$?kp46PA1@d^q_L#+R7rDB^6Gw8Xn1{!xvogkRxM>OzL#bY}b>H!%}X@6>^> zPx!BEzQLGY?8IFL?)FYFUMkPh`f<7wJRhUL^ReQbFD4D_0o2G8ah4cX?_<}Oa2a>f zQugd&NR|-2p{NEN^_=Xg&lT-ia_4&O3}9Ja@ms|Eh=@f|;hR{VGESE=aA(+dLH4aM zB1vDP{b?&W9|P^Dh=QE;D;;CD3Ubf%z))tiE5E*F=&cvQ<oc#`0yTBSTJ1K4BgO<9|~ok#W{R-?HDn zwB;F?8=n?vG)TQwtXFdT!#mdZpnePA7Fs^2T4z(c=T^qdQxzmrF~}voaKy z@$iZDwK_ri4nNx@ZKe>%N7w~yd#Lo!8Witwj2hUY+p+m&TXB0i8q}YC#a`chc01ZU zcp>KC7dmG-olk!HGnqs@$9P#ZbJ+JBUI<^IAiBKi=*Vi6*DP9da6n;AFf3qPy(_qV z20CyLk_XJrfEA$_EAw>kuOSYx!^H(r&KW0buFspb9c>8uoDSrIJZ<-dx;{o$nKf4l zI}6K0_G^Zg8EOhnShH*b_W!xUX{i&TZl?4{DL{}BNf~J)KOUlg+eNkMW`Y{GHWDdY0imiN7E^>A(Xk3&cQ9H4NCq3KPV5;w{o|JQ`?U;hsjp@%qX@NJAx>!$Am z+a;oGzx>@X{`nu!aJq-$|G@8q!mm6NtFxjygkOrIe*;12d#PQ14yaqDK_-iOWiQ?T z(N#VJb?bM=)qe_AebD6llE$r@{}^Mxg;jZuV%OXSHK=vK+o%uAj*r7DkkBO!LF@YD z0RHNZZVbI18noTH*CM<7ev!?=x>iAmPozYL0uY6en=3g3!~Bm%9BFGcUGdjP1ccTf zhkyA0&0}GXyu_9Sx7a`6Hz7f^{Ns`tjh9U`@t?Pl`2-m2P`+YFqL>z`8f!jyo=Z>?#bkvlP?hZR*c>bi)uauxJ7%wFNM;Q-S)^3}&tpi;QJ?293wm z3XMY$x1nXayATlk9vzR955SP6p#0c!smflK!;}>zaIRUPf>Z|NKlE~y;7$p_QDo$Z zSO&<15K6KlP#pF$hN|lVlj2v8ZVd8T+v^RL)P2~C2P|*8AM_dseGDAoDWE&O)Yxsn zUIw3R>Wb`vhl9wsd)y1)`X;2+c|p5QkwgC+JZx9NAV(%FCzcxi=^+B`fzX>0du#gF zCOCvl0s4i7qP=#8G5sM#1a|_F3I$?ig6H6GhA$Yq7^0APUvSVs@$W#5dlhoYc19i7 zTbO}@t`HM35{QH-c3TtZ;wqaD$=B6~vl^ zh=QFvrF=O_R4`2g~maTql z7yaxWT)dqb&DRU$&BU&V@{BHf6#5>Sh4=2G(cQp_{{sE|X$XuRXt)IFas@47bm6zC zHQF)l?;+wx8*P?}ce-VJAdTYPpi@iS&HYF)wV@{W4hI5J?;IhEpY{Gq3#n@?U|^(= zV&2-|X$tA0cAkyp-kZ2R@6Sh?>O!z!RE45L1)`?=W%}PLHcz@>a{^rd9(-a9Ar~R(*@NSPlzk+%n+Ylxt>1?Vx?4hVu{hE7|O6m@lu#S*G?|01geBlLwc z-LYQ6jf~QV(}iynmyLJxG5K2bfV=%?uvRyksovTCJPDi2{rW$*Lzg!Irqvt0f25j3 zfH0(%|Es+#|A(?~+oe3WXtTwQqAZ~h#@1qA8lsXLMTG2(b;vrY?z=^kM7ZtyK6WO1 z>PEI~S;vIzG-S^(Jm=NtdEV!7_XoV6&-;1($hhXZzSnm-kMlf^BoBdADh;lwdIa4~ zgB%0(elsK<%)S)~@$?YnV7^q%fHI}FRFgO?+#jk3<(?}_*1J2(ejot#+?|AqH7>kA z`J}^+NlYP|BmsTf6k{a{|6-}vpn1?s1@6$iYr`EY?k}NSG)kG7Eyf>V#-5-@FDg=} z`FYQF+P(UAb=kZXHupa(JD(g*gM!ql<<*zv&;j*(+qory@yA-#r^Ti!KAxX@l>17H z{yZ?1r4n|4u)AyLVUV zkCydY1{YZa^u~FN{?0*FkVT1F!Af2Z3ySybLI?h8B-RqG2lEjyQ_Vh9Fct$Z34Rhswg1S7U- zn=vOY`Ephtsm{o+-5x~RK2Jgi&2K^RE6xHyvy+Uw;4K?1rydsXAPxf9WRg)=PTI5= z2RSeKH~rnT3gt@-z)U)EE9=(;D}XW2F*4}Wx^&r|Uke-4i}B5(zc(UW3@CYi59LD4 z?#xHkazgA%+2|!omLBW3MC^F&!}~{pt-ydyjB_h!hbJB$*oSzN6IYT(c*6CwMk1M5qp`F1&%h<&*yeJ>|Ht?nN+(y++fly^C zGPtKJcP8~ZHxwuf6BrCsj^bTApRmT+`o`m3o#?piFO~gwXv^15CpIKkEZctiL%EF0 zUcy(<`7?;_KZN(coIlRIB*UV{8g%URgrmSiO_958)}eVBCQ2m>kWOP;XlQRrQbsfU zk!eQt$xK}C6_W($E~6t>YVbjPGxN0xYGwxV!*}1!ii(owe>FJjB8Wzs`&uy?oiRU>8{iF9?$wFW3}#G-}^om?jF6C=N|( zS(rkYz^ zlhkOnvkOfqTLH+hJE*Z1q|DDC{IU>MKk8k)1F8O0@Yyd$&$9@}(*FCc?g>g~ABhM{ zU!9uXbr~cM?brk1!6D@o#-D%$iU1Mb|Ed2`W}4IQj;GVwt@Z!0IXWN=6lb&W-MbY0 zDToKbb1M9(|td}SY!(Hlgo$FtS_&*FZj12e=Dp4q;!U$!C^W1XZF)LLSR136?9`a%tmf|5DAqgHSGTz5B>Pmhak9X z9u!>$0=##BS1CaJ%(mdJzx^6e);_pv1-t!vyB$-I>p38uM`Ad3&$l0__7}Ko_YQ_w zy1#!7!zUr&rpiia|I8XY40k=A$Sl8`K!Cv4OkH?XI+%^Hi*g%=dG7o7?9GI4d4-LGn(9mbcqO(3Uc+8b@yhs4XM0O9Ko9v@qN+R zt78SV4inQ0D%opVr6e%l$AH7;ty1?ZwP%Q7{S}fE)1-;;oGIiWwt*rLdp>rW)N_0; z?Jp=yd?jr{4JF67xhJsQa1gHVFyX#gIfP||SP^w&@A_!tJZMS0-~jA>op;-_Q-gvK zzsVB0*{2GzR?P^P)~mQpwix!;QYNvIm(>tW>Ab)}6_5nT05v&vANi4lh^Id0x%9{vnWPO#Xs)~*Zu41~}f zk8j{Eacq1!wd#H)XAx8Ziokj>?b2kFl@wFMN`31yap^M56$PrF!o>G2#2Y8CY|x=b z3504yLH3yiK>=)JQtf-BDK>HlEL}iUYh}pM-sJam##`|9b^^1BTslucWvu(^7J>=Z zfU&xBxNq2wCcXf{6%BYQOrqUHCi&U5CUEh#0Pea@&RmwOZW(~v$P(h`JFVE?6rLcX zz2r|xcbS7jx#J-HkljIEbz}dKVvhh9R{qTDM+Zi5V!0!7LIzZ^2VI#UzAqmbLFAn4L;W{T>ukl*%0 zyE-%p!byP<6g1U)#Z?$kn3~-3gurd`Vmm&KCvvK$dNn|;mj8nH{8t>z&(%J`*Z&&I zBNq{`Ss>sSAwt;W01a`9pd2K@tw{JN71G4BUJm}aP)*!Bg4+#V8{&Ws_XYRy%bWdH zAscu8P@G0Ih4g;OE*!3(C}D8WwGk;`&QEx7ld7sp34o*nTUAEXT=oOTtkcLmo1hKi z?`vj{4yY$89JmNywH-MH`iR@#%2wg`+HXuQFfMgpwVZ2+=$?KKZ={`9by!=(l3-r& zqnJeLNP2i2KtJvy?htE-#3YS4SB(A-Xj^&K9k5czUZGSg|{<|kz8p69DyOicX zFw*8Qbqyjz7x`BK0E88`AC_zKy!^7i*UZn^uTz6#0GP^TBHB=yzf8jBxMUf|38r6! zyJ>u&`5A`HBbC&|97SXCL={|!bep4y_goYWpdFLm0<6My=RjEJr#JpSP|F}U7s*Vj zC31zP%oTcmaq+p85=dl^71yI$ss_z^J}b}Dj=bv9*ozm5Tz8b4>~J;OC$K*{G2HK*G__y(8%a$wxnRh6)np`lLN&vaH z;Fx%C>l0@F=iH%TJi+*8y7~76x4kOekisdVx7xJqJ&e4Elv-Pn#t91aUYvx`Ulzl5 z!}ND9o%*%0e%QdcxcPqb528PI4zu4{w2^b&qEYE;dl)NefzfMa2YKNwoy6ksv85pb zq&!yFy~-yda?YRDS4m^MYPsnI1MNls^+_c3QV>i-DdCy!2yPTQhZG!BnMhB+G4taq2w)-&TK0I!Xs2oLbds%j2{3-O zwIfLlub5kIBGC2Nwlaur39EJ!&t2oBxb;nK;kL68CXk8u{xpQp=)H8I7RloP^UonXH`^+rFArVFX=Kp|P`VdM%$;jgxvSbC-*vEc@? zgERPz_K$zH%+Gnnn1x5Sk)=S2rZRuecc)VwvHOSA-RVO|zI|4^uT~r$se=q?9JmW> z;;P8BcMZDw4wyHi|41220L$Y^=&2wBtvgZ^+LUMngK`gkC6l+hWwUshQ?{^s%FQ2R z853e(sl$Ke+L_Eg^tx-9Yisk_VqL*E4;B*)P~}!}ZxGJuF%u_A-m?lIL}>%Ez}*OA z%L5*8ByM(c&j+@-a-QH;;X~Gm=)c#=*ktE0cc1hTzitNxBwgsnDis4%|MLoIKMg|O zLqzra0>lmvE_EVXF!ibC374wH2F(c+3+PkDM;R`M-!8Te{cNKw|Wuz0K1`aT@|4ENw70s3<`dD`1}W)$%4>(DNtES zVFVB3{2nUqsZ=;tr1!K+lnyh&gmX)^cEg6IGP5`&K(4i0;(&2pMYHhh&6@|5P8Uv; zH4{+0wy8m=pdn$%l)> zx#dE(Kfj6h=_dgdWID3K>&zjxt$-I4@0$zAlfYDuaHsfSUWkrOYAp3BLbQRaJ3LLI z=fTp{`-s$6O}cO9Yv0`9_0HK6TtL(GvIbX;^iP(;aaI=V6*uK52Yj~%Th^dSff1oW z6ty8k-hTU_ApV(fB(h4G8aw4yxb!Iz*~>wAge5!dwFKG~&H$?g!@hF>DokrE?PInbWn%+ITm=?2D|9lA|FEDCxa&eq}plTD*4M=vsr< zs8OqOHW(~ZsyyNhx06VCdQ!&zReWV>1>R(~yPc4Dqz>~m$CJH`TR3sg1O3HzWnXW2 zZV(%z;wZ$`VwONX%NF*9anNb6Q)VMDGLXAo3VL1>ut|MtvHBg9{l|<(efI6=>f(5B z@ng(4d-!RW2$J5!nFWtNZwv*dq02fyEB1mGb(`v1^~Xx(tvT6o&J{``&(3$yo^M?L zl?$D^>>8a7Rm)ZP$JDK9t-lvLa+*3)_`A+z4vJ$beMNy$6N<vs;CrDjGlbB@Fn-%=+~ zJ})!7E(;qI1){KOYJ^I=BFv|U*x@}JGV|owQwJVx(%T~>D{^%p+U&;^YSiL!dxT{b zxOrS!Kn|UXWi=jzO2y4}=V~mkI|UMGJZ6)Us>)s%76qg~fv=ieY^NCnZM|a4_T(*r zUYdpO+84}nA;#?BoM9Y#Y3Q8oj>l+3M``w4ghMIj1yd!Yz>K|v_1h*4>hKK(&?%=7 z^YM9V&DunSV=2-~rrl#b;+9;3_R@Lo0XmEz-<)CI;?7X%ODsoypx@T_MKq~lO@r!J z=4R$j?ifoY9FZT{Gb}+a@JyJhsb9`OwS?vwRqI2i~h0>(5|_XOF9CNkZTV|kCe-@~i#-JXtJ=3uj%=E&z>n^roS zVg4j5XQ^=FgwHthPKzn8XSY3cz3LSkvnNwdZ)4>w^r_Zm{QHNNGJ6T4mSpD(+Yivr zV(rj&vZvx?9=)Hd$Ib5vzpUf0s?^Z&F*;@C(Vc|)LfL#w>H{fXmKz`Od%h`oV?J1- z1LT5hu^#@$#K9L>o%LICZg%Kjr5NcyJ?;^&-(ic21~!hqe7Z!}Fl(MEMmWlN=;LTP zwU~u=DN@&H8C`Co+gw%}IJXvMxv%4 zIG&BJ6R9P6-9>pmmU%hRo24d92QFMe(2v#LL)cGu6U8lKvl1Mp zJ7Q~?6}z^e$rc4{LQXktegpK0)#Y?_f$1K>CaaXi{n@MV`p0g{O~g+x=w=P08q;0m z@SC^*1L_)1Ows#AM#u=liux1sa&CLYaB;V1F2BypG00ay4!X>hu=kEX17)4PLiBCc z#jg54{plJS0Ic9~v;XmB`Zx3sGDTAB|NlS#>tis2BS{Z&Q3naJ)hu{vu-QC^c4dmY4`*xS_ zFnYSWs;j!>ubyB9r+6Km%$ZUe7(K2XIXd{pq%WvMO?-PJr#l@-pSZAMf7Ik2Qa$5{(f-i@CF$N{Uy@<@EISIHojzgmHqu^~jc#_Z;dNFc;3p!5665}>L2 z%c{pId4FRY3PJR!V96#S_v}xK`U>?BG>aJ zx_jNS58NB4nS(G%4u^V!5O7bLGBP&tIW5RAB;Io4i{5ie;Gob{wvAUhNS^&Fnx@~; z-bL};_$C3{>s9V%Bk#3M4U052tk(s(W_QCvHqZRC-U}$@6$+hbGTQoG? zmfBeGeyP9C4%EBrC-BZpE+XordlBA&EZbz>j=&$Fw+x#k46VhQg!mh>w6LX|_%S9N z8UhRDlS=EW1hTL1Be{3rhy`68<~%3GF@ zBUg^qR>5^CS*uqrID4(~23zG=MX1c>vFhlP!Gwv+YoVe)euToRig) z-jf+mEPR&!AjR8e5k^;=5@WIJA*=!PQ>8J75 zU(OrCnHjytOlkqkN^j!7FFDaeK|}~Z`aK?|3@vla>smr`FAieCpBeLNpOUotB1-&Z zV_$v>gk%ojnE^;G!!-H{CB6A2!Y&QLW-u`(jAbkUOAjF{f=Uf(*+!{|f@1qsT(PV^U zqE!4NgQ8ybu;xN*M8=UdMB%Ngt>ZW#@I;=I)JDNd6QAPU_#0AVs!CM9H*x~*hI!MMf5jUF`Hsj)-y?})GwjB2MID&%3BFuH zo#jJ_s-d$wo7a>YGs|S8cSkTcq1kGJoj1%13pf677xqfwu|p%CZR^|#-8GaK#M9eM z)G9bEXf;u0()6geNn+H%IJ8T&2(+QrrZHJJDRMMiarA8T`4spLr&X_2+Eq?Nf%5oi zF)wif@@Q#1^4BqZG^riHjhGN=E$KTMDw#x?rd(uW_X@_D1Oj1s^0VGo>q@7Br|_pH zr^=^MsWGY1sfF4<38ZY&=ke+U90nZ{*F84AQ1@Y=hwxE+jgi-QOOrGHen|09X|boj zf3LrxM^}#bRu9PAR;7U>eBYn;L&){4XF&M(W~+oxyh94$;kJr_o@Zw zRY`vr-AVe5m?vUVUlH!`(;?xMcEh`GD?a0UluDTDy(%|t0BwV+d?A0fkrPxsQ<|Kf z*pVv5kFNzVh2IJj3WyXBln51--&d-Is-_fv$a2w^8)(Jp3e%UQG(ucMS>s(B z<36xoT>H89A)*l9)qURc;$&BMSNp>7!sEhnH-kM1?-36dZ;u_1*iNwj;)V2 zQ~WtILb}e4b8eT{t0#e7OOvA21J%IlP0NGH-Eq9}$x)VYs6=zyCQ_#NMR32=fdg8Dqxn@SWOW8(wLs?Df zDrf#J{oBm9_-|^1L8e2dxTbRh^@HynVb9pl5YA+=3IcLo4I8FN3`75dPK3XQk4Lvr zS7K;lIHR{@AXaB75-mn3!YkI5XHQMywqNLo2-YhmEMhCZQeP^6U!H8GtUqRTHaj_= zV6A1~IT2xstzSD`(t8-+6d*9=)9@e%Ti=cmxPfGiq(_iO5D?)U;Vu6~UPfLk&4#;> zSBksTL2ygd?!;bW|M%+Y=)@?;)J4>uo=t)cuFc(ix*ThAM_QHHZ!%YJ*MvJp*K*h~ zvR)Au1n!!3{WR$7>gHv%CIs?1@T=I)mCGM7Iv+mJb@64kHLK>^dPjZs4|d-h11@4 zb(#IiJmuSkylav!`@`*t~J8X=YHl}J>mF{?3`6yBx*m9!e4d)s=o zVqvG7_Xqc}37Cc?<%y@#8q)9BI|WR<`zlqg#u2}Jo2Q%SnLqIB>GB+@dMMsToL}Lt z;Hu)bC)+1qXsj3I78!YA`oOe!*9`5~ReC~WeFB2G=Quo-Fa4Ose{#Y0CP$CO6(U6P zrU8{l6|!O7iQF;Wi8nijc=*-a8GUWG_|M$wwgd)|d!9@L1v3O%tU-&P@?I0spX>g# zM6IB9e?MpVxicWtGZC8cyY5?!ujS`gfW1!_uWS=L87vvc8MT$JxAR*wEJ86t{3W;& z8W@(!0eWp(qt(A{HWK3XLU}r|-xkTfl@%;CEUiDT92_#ymlEYlG~C!kae~CW`$*ql^Bq~Va+mM;nKf#T6JoP zDTsNYRb5juf9r#9Hn(x0JGbZZ@rZin#GJ}@YfuN&fJYlnC+mvtx^>`FLFJ;*%{0_9 zzCSUqRdFSY+45GKP-8)NO+~p%cVRDMA+BiVNz8kM>Z%nM(~aS&HA!$Bm3TTAh~HnAUFQv}inhn8=<| zve!Pi{)!%l9zgX)VKalk3bX1m%6z^?KKXP< zp(%&Oi~I7|L)dssyt-D~PTTyq4edu#4FnB%j66CPyDmF6hsooPs})-t%4+u|sZDrZ z7pv7}mI6~oB}B%al52Grh8hH%%zAZxEv$OJy?T3OxlnrFz8~pPo^yQ- z)dHJ_oI|we-r;k;YCp6#+!UbjQQ>XIu3)jd>0MDCQ)cPiP1RNt6ExG8+t5dqN5?(c zu|%oI)7wHv5}(Yg_~VJ=Jyl!wMU|#%-#Jbk7Plvz$%d?}PGWXJ6v=@Xj6v9TnG~&+P>tR1F^sR6zLQk&Q3r%?|6-Dtr-oBZ4FHr-K_1vcSAt%yYYfwTAMf- zkhob}**NmL2>@U2;03>a{+J0!@^Xulr2tS}PLV{+*1?2?gOQz)87PQALPEmtU~I~( zBrf^aaPT_;;72DXJ6zLvRtE4L436$LP6loaHjZR} zi2O}Q+{Dqy!Q9Tt+}4KVnXZAMt+SH=5coXNzyAL4Y2s%7@0n~I{}KxO#~a7L7tI~R6qs@=1T^&s z;xWqh|01ZEdB*p@_=6!42HE%p3S<8df_{LsrT;NK8Z!hWf)f-!bp8J#h_QW-^xyJC z`9Z=dX5ufCj=cJBdC)S2w_N{YXdeKQ@`(({M0(E)}3WOlT$ zLDF<(m;WygZLxt^RpRbMAndQF*WD@x- zozBq~EpeYFkh)Jp-#IVUzLAP<4(qS{I2 zhD;9@s6P2rY! z1i#`szQYZKaP6%)dIKMozjctZFhK3>?5Ia2Y}*@R;oqU$)k>&qrLAF)WgVK1TkUsA zTLCR5Km0m%8{94`6di-@j@DH9+(*!V?Gd(R4{VeMkOGB4M8FY(E>U3wd)$Kr;C=X$ zk1XnjQj*kamiVd>qu;#%l|jv^r^`KNG`H$d@QYyxO95C789Uuc0x@=2vrDE%r_@94 zXBiC`3Fq!Kqfvnyvub)l_ti~;az-1ML@K7&H`(*-L0w;2#}9GP&gQWz+;7?2P&f}Q zG43rnP8Aq_U3O_2zjJmOu_3EQ5ID#?-sz+uLD%oTie9TrdM_k|XxaHA*gt-*yp&bUzT>dcjdX-c7tViMCk78N zEJH#9wr9u{BQt!kA#Ui}))D9gM}?kAhlkB=7ERgG%x;{z(M&S5)QRgd)l`W+JIfVu z;X@w14|7{*6)v`pas3NiYI!#;R15Uky_f+73p5x}4{*hH)uF{G@SBQ}X5AJevBB<1 zEaOwbefO$SdvtMRO)%cYok#}spV&T&QN9ZfZC5!d6$<1M8u&)~CV3zzG==uDTH4-I z3&F`(u`=>6C*=S6wGmD`&nod8>8qQeNZt3)b=KeO4~TqW<(FfoarED|`L3 zvPj|jgHm`^;WSn6)ev;bxpd2Ebq}dR1y0w9b}xS|j(3O`42I85d5kf-P|eQj?@AhU zu})*Ps|8uZnBdjoCUw*R#-cQmD=|*e)xSU3iH`^jw=PaHfo!nCU=6&TR&mLBg`kGT zPHEw{-}(V`)Ka6Z_XYNv?NgW|_h;}dT^xu#PfT2?W!LH=7u1KpEIyl?9}%?i`Te96 z(zZe0U{`45@Ci@I;q)0@0y6e^R=FMAP5&gqTrAZH6`JV~I#-q;6I7ptvwe=fH`V0k z_u4p~CB2!(SHu`gJ3)ZCaE;BB`K6$$drgu`1jNwWvTTpQrdJMAIY;05DGd3^#l1~5 zDC);Uk&OGt0ahiYoq+tjD^qstZ&{iJv-3X?d+_Fi`Y2O6s*@BL3PjFk4U-!1qic(> zPj_&b}cNCx0*&H zr0agBX?#w{TR zZCZP)+N^rh-S1LeN;ki{@1ixvzH}LCt#V1lh<1nK!M4D^s(+n0o{jjixY{I+E6dp# zhPFE(f#!n>yNAyE6>qFYF+ekVrtnpohWJ&K#^i?JX&P};5xqg=cCTd5`Z}6h9ft0q zp4qQDIQN2782BjRanzqrTo2pxzCh};p|75#J{MwIxg#y4lzN#|`Wv^r#vu-trgOJO z$jZU81HzIOVjjHk_IryTr}a3cp+v9yhYcy}H0a@vO6a;mC~3x&%d;vq;8@GYweR<>WKSL!iW_-^5s@htpmnUVknHO<`Gb>pG zR8y~%D~GB3<}y=qLW;qsIKutj1bgbM?m)q2tm3C3?}@%ps0PFaVOKcII-ppxqh$84 zw~`ZtXN+h}#1?7R+&3#Yw%VXW+96rI5zRCcJqhONdOQsm=k#DiYv(>$8c4)qV2*Dd zV%6TFM`VXvG&Fz;922?Q%W6p^ZoUXTOnzNHcqq$IU{?@k3`i99o`}CvDv~$Qc(n6~yRqKS_r}D{R-H#3mmlv$Gm@Jkf>wSJNML zBy|*3p~lsW0xv4X<~23>x*XH~y%xkK4FJ0?}}yWtQZ;4(N>#*ji9MD=+F?EztDqI~nl4Fm(2#09a?VE5dFvshenI zr_r*0t8FlSM=U;gPtQ(6sRKOvT@cugkBltWNpayturadFsRCH2sUjv4w^h&~O0cGMi!nDS}|<)^C>qh(ufhf3i4M|r&LHdo3D1eFJ+;LNp@ zgc=azg=;665}TCSWXn8ENLhc!G*KE?&K*l+%Fe;J!cHc#)D**6M6ygrtQR?KD2eu( z?iYRtb(NL9=#Tn@2uu_~!mLLZ^BGA47bAz#;nv54WS*ns~|i=7X}ivF@82++i(^$*A{btZ@}0Xgso*AO|d6dmgbLz z-wa`D5kuXZFC{`-C-8qxG1*b!cG0dnN^|OF6VELU8TtIfu(CF{ONU^Nep>Lz>eT6w zt2svKH`JWa4`^$dUt8^V+=pQz9mLQ1J?2-;^LpUh&fgSvRHTR~V54=Mo_Ram)RC?3 z)70+`Vt3|Ryh|Bzsk&k>xT}uO#?ah=w&f?_3btxV)y505rahh8VVKmjdaQH6!M+ zg!k0O`#NfTUv?`2{$h+do`CyUA_F%uAa39k>3np6bmkB31TKh6pv1|N%P72JQNd^m z*Y8-C5+(=u#`!|V#8$Q+HuGEJ!(jCSQ-qoOiyo}p(N0T)k>N7MdfZS7AT@|uD$NWy zeTb(Tya%(z)v7(^?3`g-wTNxk!iAoEisXmN<2Yq8JxAsQ_C>HqPn(D2%e8bu&Wv*@ z6fnhjf!iK%=RVQl{M}!}=g0bCd88^)+S8hTh1ya9c^D9XsIGHD%eOS0*jeOyq4Z9Q z19&av`R*z_-TQ6Y8As%{_YT`&iM{-6nP{C$))-lLTsc1&bZW}ddf;O>AnHNaTQqiw zmY*-y!-}M}E%HxW3^yM+O9b|8E-uW#R$^@Rn#;=`E$|#8z(dRX0R-&6d?_OdxIy>5 z&#MSqKtUP}E+Z#NY!PyrfWp`{xH;cu2ghe_bR3=w3Y+WlO`QQjxr+XU20M0K@K2H~%PE8gwjuN_-Z^m%Gd&9Ly5{q={-;aya7)oNVBw(fz3**C65@?Er{ z-^AaGQCaAGfO!)vF!lOFRS#*0C+K3^b^x8~7QxB+7aKWuUn-3etPRduwbbR5dLljTL*tZ5oi3k^%NK-s5IR15u4dFi6jy37 zjtl@N2~tFVfoBMN%+08DvA*h_(xg7Mjtdjx_=!0-Sv zU|c^%#cb8b_S*YB@BkO#OkXUL^-igvwEmQ6Afg4>XF9YK1J0RS*HQme3W3hfB(?_p zL<}+r)0^S|j%CP3oU%|p`xbo@Ojdt42Oa*yan+)o^q6|MPK}DghI)T2#fmyDW6s3g z{=Ds}E8%sD!|UQu);E*LT`+%IGp1aSj%|ubo7`RkI_;b7s-^#aWk>VxU^A z1Qet#YHQGnS53T5#71}N){!5-cYNg=JlwU!&mPo_d})y1U*Xh!Pv5oAX$8<>{*K+d zKB=iziLJtsS>Xl>+Ef6^j9ZqLGPX+=X4H6}y5P&-3!GKfR!5p$h&9ECR*yI7J^X_C zUNEB_`RkQ~Z);T0=9GRs$5-T_4%Y|ZN!n{NA9Bbhc*V>;IrgB-@n71eM!u_QdbHL3 zpSj89qna%#_#9ch@@@LrF_mV&;b+4#jf&)i%ndUv`5@?&94M_s%(Ivw<^rG?_+`eOx2Qzin(M4sK~$gV-!P}9*; zExW9=w8ZSait#1}&^9{k6Q8r1;Iwr?VrnR#nD;@!clvJmJw6PnVQ37M@yvR9Db%gg zTYb-06@4ao?iW|XY(lncGJK{dhLpvdxSz0;I=Q0uXc~N|ed0vG_v5jm`t%#qWT`Kk%#< zd1j#Wlyd6bwvRD8w(N!+>#KTo7s4&+mJ)Xx%JTa;W3AVWG3Au<&JnbhoEXw#(RS8$ zJ;t?}6qXH5_HYW%u)~Z#{0HS%bjZ9y;zY?T?A*qBT|yG%Us8DA|F}bO?=r{^1gBGN z8P(c-kL?Q^7@IJ@@}ryS7`rWX_5z8`QgffTyui$eO6n^d!S@L4G&8y;_RnslpY5N& z7TctQ{R7F3M1qO<&^uR?S60Xx4CU?D8|Ja3!T01HDHT-mrwr+vM?B{s&>*sQvy-_R zvajgfz5aGrn+o0M*EpwSe_%c3XQEVSb{_d{m)MVJL5KNTu)cLKO;J^=7OG zW-YeUT_p?Mn{vp92#E1Zlgz_ulU#;Btj^*cDj?UwO8Nd14}T-}4D?2d9-r203>QAxa9z$S zBwBtvm-Z}6Mg9k@E<6GTpkWb<8w}`o?w6!}r`dMsZ3&BeR7Z+ksxw|;J-QXqB zXza%NpB??zV=F9JPlBz#XUA)XKOAyAtsFW~g2oUc4zfdpOVke^Q}Czgs>iIK2E{QU zx)h_zcpeQR*4v>{^aa`!2D%c zFt#t0DL1~+EA)t<(0JA#{Pjc-j0DBEim3_t!Isu%@c%#NNPaxK@9S$5;7^m%xMi^N zoU7g{lcNwqZ<1?+218TSxdeELxXff;GRMCr0fCJdmikfK5XkLYP>u}Gjjj*iF(bPF zCnqR6;3b6eT6_nMO(N_<1&Itj4!_Pnze(}`8VEts&!8j!2g*;cA&44cTA`tnglz!A zjdK5(4lFM9$b(nzJLoMcZm^XS!{4vYb}PDU2nb#pIzE#NA^_w_3AO1x9<$0nb>rg* zc;IY4@n^oX>2uv&o;PPZzG!JcTKf6uxq2Vdlgw@=`b_;j7)D#@hGj|ww^0>a#q9(g zj2zL96NRUcbw9r&>Hhqzi0p7bjLoOoEF>~MEp|Bp&RV!9BMFLtdP+^J7g@W=!P(|Y zU6{d}tsvh;d>=j3Evi9E#HML*1wo<+xZJ+M8Tq;xvhUk3c|Y$K^h8ej7`ra=JUgoF zGLsI|O64r^N~vDzxp{;h&lA9_a#!ypd_c=}_OnPr-!^N|Oi!Iun;b`L^o$>NCz;jOVro zQUd`jJvM!kzhiPCiYxh^Ef^=!FD%LTl1T`mr_J_pU5}J(_mSvU=vbrg~f`m9DQV#WlZ~a3NN5RLd^16CAjkeP3rE z_~7wUzv}8g4WR$Q)mp)mDzqLqPfcasEKkB~o^XQgSQpxu!Kv;@+ti-xBBjh^5-akX z@>`{-g`|TMBBtlfDa?%)L>ET4b$ay6)`kZAiiOug$!~0C`t#h@dbD&kk6FQ#nc=K7 z=ixM9z0c37@rEpMT!VII#-h)>kPI1vaBB%||4ff^U34iJ*0_F?m)r8#z37lX9s5{y zdAKPU_iaOLbgOP}^h$+D`{GJp>Q%)D4d4!@wKuh_qji=ycMbWAi?pK@1|1HF-H^w& zJ=nSOuvL5Nx66{FyaOQXJU|dN?)p%`&xa;6txn^2QxY%=3h2%xmXJrLlyTrcdnP{? z_@3>X?f_g7`@`RpL=rd!kT+F zqnOs-;tTHPM=FsMhOB!%yEa0T`WYL&w6N2(-`W7Y`YX~<_yuPpSuwE9KW~;>q$;nU za>1#Ej3;qm3xFC%}C3!`_#63jMd*-FnLmAsz4tw+qytf?` zwXeG_mfCC6=W|1?m0bl`6N;;6X+_L@IaK(@opC=)zHExG&q8DfcDl1anYGp_P(sr5 z&DktKCf7ZTmn%=RGnBQ6E9EL|j;&9FS$ag{zK_)4zT3LGKM=HOp;=1)+_7~THYeFH z7u$1~p4E5QtVC~Hx_;`yus!|ddDpRna}w+V>LCtaz3C`uCn^%lwEnMKtTgjAjrS_1mc$)r8@BZM~dFDYjNG zJ~>*3#Nw65Lq>XAyX_-8YX+^E1OSGLo^kIGU!_+c6mO{khb?s}&9L!Nhuj z%pT|HUfMXRd25L^m*9wz_%U76ch6#7g*ISF;`^DlmG1=&vqpodm(>e`0*M+#3tnZS z5!Zk;84`T}t5(CnEMugO>)~$>npCWr zo`MS*1Y4!3ys+db*y;V!Yhm7Dy;K{DY!BPw^$tl-ske+OFOoUCE($2Y#l(MhQGS$w z_oO2k_iLrc9ege0(EiU2=5s2N*k8TgTZtV*e&3h;87j}iQEqlwBUL-TRE{DP(#cm|=Cnfdy>&;MsNcwMGylU+%>G4d^%bw|cX!`w zaK|7EI8u{~32uVJjL4bE{q&g|1h?qzuKD3T-U3i1g((9p8=PU+AJ0Hrup=iANMb`#z=f#D z0C{l0DFD}kkBLKx{))EmOVSVBm2Vy{!Yt#L%4;!J@HJ``lM0ibU8NuNuXy1Ocqf{n zjfzX~Q3K>DGtm|ql6`pT_l%u&7(4k9X}`Xir@Rr!zdm=Ph#_(m3CnuOb$oHVe|HMxBJ=dxLmu25SJ`pOJ6r` z#zy0t>N0l~rx)JA?1L|0jPUg9bCzhlTY?j0Fdyqzv9SnjfQq=U^xrA}c2a>eZ&ZLf z#%b73mMbr*(!WF?B}2Ic=)@TER7ZL1aihSyQT)sA9Ddw-Uu9D3Zf$vvPv2sCP9^^I zXUgYC5>|NsCSfz4>YjT;hYu@KnR~FMG%_ng>D-~;Lcjj91uzozpIVMpe5=#mkb22I z{w`JEh(Kjn+w}QZjZ82Mv3^X@Rx&GHlHDV$g%tELzvS43G<=HPGI0j>1yN}h{~QZ> z38ZKvp~BM$=h2m9J>DyK^!eYWxIiw?br{%FU~C&18BOa{@fAH&*mzDMt~?gS2i-FM zz20E1ok&q!01F8i5x8^C?vL!E07%p*=b^d8ePQi)1W1COC_1jLuZ)L-(zXP6kf6EOP;y6Wk8XlZ!-S^3wN-iVJvm4P03RJ@$A( zYR%)I9V}kW`>Ewb_|fN6_WuY^Cz5D)M?@9yJ(P;v?(XmXlU2PWCkAl-X~HeC;zO<> zaP|vzsmlolP>xlxW*)I{j9ct9HhB2$d*C|q?s2V4!s+t0(RW}%i6#% zKxlAuAl<*RUPPxMk^PMDnhl1Zhy490fk+8Pk9%{e-6<5%_lQqHvO~_zMUPI)`V_2s zPp%gf8AHTO(~+v!zREj}n`gyIH74Q8PuckO$0_|SYfgiwD{NNNoY;}v5@U(_O9B_t z(U0jKgi}IlVORX;>v`LxQGAXpoD4Q9l#N&2p7#0+pn_!ns~oApoK5k6m)`nHaQ@-K z$blYPmJU~IW{K+ls~v>FB1ubeVLLySqyW&)_dzu09<|4B0sPbpMUM2)lH1 z0=q(Xl;1mqDVIH@o`)@{VdTuUJHq!;pu5qW!)V7}|6Vy1R)7K72%E2KWx4E+JdU-G zlZclTYp3w_2q_?aaQ2NW@kgtucMg|yWjjMI>$=7oPKS&|3=3UPH)Q)Q zTU7F+?p%D8oXgwUa~MKGHw6TadgbERzP0z%HdxV5Y#BmKz{A3#_Ibwat-bi|8{Dz} zq#F0m>-IAnarCHc?GQ(r-(&(b^KQs7cca}o?Vex;MM#-hA-wJZcE-pg!-1Yz1SdPf zR%pxu_&=S3H|8AzU+@yJtBv!^dR1SXI~(hJkD2bal?Wrbk5XYlrSs}`Oo%&Z)&F%I z<J;6`k9@s~PFN9Z1z}@Iy~mX~bD0w8z$R3(y{oIBPEbIADVb zrnp{3_OhS$MqhhW44VU%U^4jNwo{G0Og+A-u+7VU`wRgOo67SblC0{D=)sW2JUgIG%SIM~>lh-1UWf!;id= zN?|gbeq8K25FlLBgC66QV*9{f&3Td2REJw!die_jJMiZ;^uRE!xWOXeUE1n*sM5b` zw70Dz0G$MthL=#=A=eATYrAl}|AEN6XY)oyY&Z&Xr(e!zgvOjuru7Y(NACBjux#cpp$P??C4#2%2CV{1` z=KU9_WDP9})sbchiYHe(5!G2JviTBkJ(0_OC(Wrq0> zw|(No@THqb^PZc^pqM3_;Ft!95s4JJenC;2RFl#>s*L6UwsPOVxHI|;_^T)nw}gHbfU5WlcgS1&zh zQopg(r8{gHVk;?!4|U$l=h+BF+HpaPlO9&{H=qj-Ue2p3Ly^=bT!lZe*NH@58pODD z5mVsY{BE3|>-2<=)XBC6VFBtW5#HbqK%g*k^beD1pWrn2rWft`hywgc)a9hYmigGjcwe{+}8`jiVzhT|UZv5G;( z1JPe10;s?u`nVaROg$Y^rn091G7O^VF&5}8f_=M{WVH!RE_E`OB9KUjN^620lcVI~ z*cxPIc`Ezy?9RK6G+4U}C7P&HIHR~Cgw>Mh+s5jymVc<Q%WY!y2nP$O$+a`eG5VN1fi?loPCRu7b_IzD z7r|)mad2xo+KI~(Pe%Q_X>OCc>DWbf12(D8K5>*=!qLm{bfcA}X!0Tsjv4B+>5;ml zq)pj~#U|zvCH#K@%t?NvuRI=K2RvgSkP3_+VHoH9K=`(ma33mrY8ID!Y6P|7l6ps;7Hf?Q9gQkIX{Yfl^87{&^4=_L+!whz40qT% z`ShUfTu$M!Sa#qrFI0$`@wC7}`)K7)S2GZT6|_4@j5}*R$>3|4zXb(DLCt8u`5w+n3wB(WNKIi0(nDbXt!RZo@-V zfcJOch;o3iZN4z_{msbB3F`tl9Qn*zub+rQ^9R#cxu+A%`3iHa>9UdH0%uTUX8N!F zd=DCrmeKZLam^psJg1-?xjAB03 z_aFaue?nK#a}P(Wb}dO3jL=y`pnERewZTQ@=V2o8sfC2RFawTY89Pp21;KA7aw-1N zJmg?RN*sl|3~BmqZTX$aN-2oP(y7c^)Up$(a>!jWO*=gjT+I`)am4#Z82#DDpj<$| zp%^ilyrkpOvEI%*IK^KhAK~x{(C&}JG_F~jp(~o1HSr}q_$7NW0ZqGZNuG!bblrkqeq9m4h=Fa5d9y-P-!P?L^QVKI*J-spgJX zb97?v^JO?gSzeHAPmyTDbfn;fZQ=f3rxt?!vY>CtY#%Z3AJ4<6gbZ1k zpcBQeGcQF?&iY;L^~8u=ezI5lsvKxNsRW($OPmv&WHa6!B-HN@af~5{eBA+xGC|)8 z39P9v+SYc)mQj%OfA6iZ_^XxF?H8kchVP9}_I&bsl=i-;P!Iad# zqWEBe?H{!(KPc86Xlsgg>J?;z4sw7psTe!E&@OA?XXj}jMj84#A2j1aJ>QwrL*LRO z19Ze^LrrqiP|r`IzAQ97cR2b=8l`5W7WgZZWmfLJKCy-nfs5MV#eGSzNmN7o;IBht zT}9jkPx^0$(4Na-%Fe(xi~#$KG$cGsRq^p;lgWn^%ARi)1`xr&s|O!R;^*=*^!|$Ww1?yPf4j`hlDyT+pe>8#Es=sGp zta_-jA8&Oic>$nxT3G�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 literal 0 HcmV?d00001 diff --git a/web/assets/style.css b/web/assets/style.css index af32fad07..691c11b20 100644 --- a/web/assets/style.css +++ b/web/assets/style.css @@ -611,6 +611,15 @@ p.lastUpdate { color: #6d6d6d; } +/* quotes */ + +blockquote { + padding: 0px 8px; + margin: 10px 0px; + border-left: 2px solid rgb(61, 61, 61); + color: rgb(109, 109, 109); +} + /* News articles */ .metadata { diff --git a/web/news/nim_community_survey_results.rst b/web/news/nim_community_survey_results.rst index 49656f20a..2d169d24d 100644 --- a/web/news/nim_community_survey_results.rst +++ b/web/news/nim_community_survey_results.rst @@ -311,7 +311,386 @@ release schedule is not regular or frequent. Once we go past the 1.0 release, we expect to see much less use of the unstable ``devel`` branch. +Has upgrading to a new version of the Nim compiler broken your code? +____________________________________________________________________ + +.. raw::html + + + Breakage + + +Despite the unstable nature of Nim in the lead up to version 1.0, whenever +we make breaking changes we do our best to deprecate things and ensure that +old code continues to work for our users. Of course sometimes this is not +possible and other times it is simply easier to add a breaking change. + +This question was asked to determine how much our user base is affected by +breaking changes between Nim versions. We decided to have three possible +answers for this question in order to give us an idea how frequent the +breakage was. + +It's incredible to see that over 50% of our users have not experienced any +breakage after upgrading. We expect this number to increase significantly +after version 1.0 is released. Of the users that did experience breakage, +over 80% of them said that it was a rare occurrence. + +In comparison to Rust, our results show that there was a higher percentage of +users experiencing breakage as a result of an upgrade. This is to be expected, +because Nim is still in its pre-1.0 period, whereas Rust 1.0 has been released +over a year ago now. + +Unfortunately while we are still in this pre-1.0 period, releases will likely +introduce breaking changes as we refine certain aspects of Nim such as its +standard library so the number of users experiencing breaking changes may +increase. + +If so, how much work did it take to fix it? +___________________________________________ + +.. raw::html + + + difficulty fixing breakage + + +Thankfully most of the breakage experienced by Nim users was very easy to fix. +If you used Nimble, do you like it? +___________________________________ + +.. raw::html + + + Do you like Nimble? + + +Nimble is the Nim package manager, a tool that is very important in Nim's +ecosystem as it allows developers to easily install dependencies for their +software. + +The majority of respondents rated it as a 4, showing us that the majority does +like Nimble. With over 55% rating it a 4 or 5. This percentage isn't as +overwhelming as the 94.1% of users that rated Cargo a 4 or 5 in the Rust +survey. Based on these results I think that we definitely need to do a +better job with Nimble. + +In our next survey, it might be a good idea to ask more questions about Nimble +to determine how exactly it can be improved. + +What aspects of Nim do you find most appealing? +_______________________________________________ + +.. raw::html + + + What aspects of Nim do you find most appealing? + + +We were interested to know the features of Nim that appeal most to our users. +More than 80% of our respondents selected "Execution Speed" as one of the +features that appeal to them. With "Development Speed" and "Readability" +tying for second place and "Metaprogramming" at third place. + +The options given to our respondents are rather predictable, +they do show us which of these features have the highest appeal though. +What's more interesting are the "Other" answers. + +By far the most popular "Other" answer was related to Nim's compilation to C. +Many users mentioned that they like how easy it is to interface with C +libraries and the great portability that compiling to C offers. + +What aspects of Nim do you find most displeasing? +_________________________________________________ + +.. raw::html + + + What aspects of Nim do you find most displeasing? + + +It was only natural to ask this question. This is almost a perfect opposite of +the previous answers, with almost 50% of respondents selecting "Debugging Tools" +as the most displeasing aspect of Nim. With "Documentation" and "Testing Tools" +in second and third place respectively. There is also a much larger number of +"Other" answers to this question. + +The "Other" answers for this question vary a lot. Here is a selection of +them, ordered by frequency: + +* Small community size. +* Lack of in-depth tutorials. +* Quality of error messages. +* Forward declarations and no cyclic imports. +* Bugs in the standard library. +* No good IDE. +* No REPL. +* No major version. +* Bugs in the compiler. +* Lack of libraries. +* Difficulty installing on Windows. +* Non-intuitive semantics of various constructs. +* Lack of immutable collections. +* Async/await not being production ready. +* Lack of shared collections for threads. +* No Haxe target. +* Memory safety. + +We hope that we can improve these things with time. Many of these issues are +already being worked on, including the removal of the need for forward +declarations. Some of these issues like our small community size are difficult +to fix, but we will nonetheless do our best. +Previous Nim users +~~~~~~~~~~~~~~~~~~ + +For users that have used Nim before but decided against using it, we asked just +one specific question. + +Why did you stop using Nim? +___________________________ + +.. raw::html + + + I stopped using Nim because... + + +Again, this question got a lot of "Other" answers. Apart from that, the +most popular reason for leaving Nim is that it is not stable. Followed by the +a lack of needed libraries and packages and the instability of the +standard library. + +* Lack of IDE support. +* Style insensitive. +* Documentation. +* Dislike the syntax. +* Community is too small. +* Missing language features (for example RAII). +* No opportunities to use it at work. +* Messy standard library. + +The first item, "Lack of IDE support", was mentioned by multiple respondents. +In the future we should look into ensuring that major IDEs have plugins which +enable easy Nim development. + +Based on some of the "Other" answers, it seems that many of the respondents +have not used Nim for very long, for example many respondents complained about +installation issues which they would have run into before getting a chance to +use Nim. Because of this I would consider them not +ex-Nim users but developers that have not had a chance to try Nim fully. +Next time we should also ask how long the respondent has used Nim for to get a +better idea of whether they had a chance to use Nim for extended periods of +time. + +Non-Nim users +~~~~~~~~~~~~~ + +We also wanted to know the reasons why developers decided against using Nim. + +Why do you not use Nim? +_______________________ + +.. raw::html + + + I don't use Nim because... + + +The most common reason that people have for not using Nim is that it is +not yet ready for production. Thankfully this will improve with time. +IDE support is also a prominent factor just as we've seen in previous results. + +There is also a lot of "Other" answers, let's have a look at a selection of +them. Some of the most prominent ones, in order of frequency, include: + +* No time to use/learn it +* Syntax +* Documentation is incomplete +* Garbage Collection +* Prefer functional paradigm +* Small community +* Style insensitivity/Case insensitivity + +One respondent made a very good suggestion: they said that the +"Do you use Nim?" question should have included "No, but I intend to" as +an answer. Definitely something we will do in the next survey. Indeed, many +respondents mentioned that they were planning on trying out Nim but that they +just have no time to do so, this is very encouraging! + +Learning Resources +~~~~~~~~~~~~~~~~~~ + +We wanted to get an idea of how Nim users are learning Nim. Every respondent +answered this question, no matter what they answered for the "Do you use Nim?" +question. + +Which learning resources, if any, did you use to learn Nim? +___________________________________________________________ + +.. raw::html + + + learning resources + + +The idea behind this question was to understand which learning resources +were most popular among our user base. The +`Nim tutorial `_ is by far the most +popular. In previous questions, we saw respondents mentioning that the Nim +tutorial does not go into enough detail about Nim. Thanks to this information +we can come to the conclusion that the tutorial needs to be improved +significantly to make sure that our users get the necessary information to use +Nim effectivelly. + +Indeed, many users also use the +`Nim manual `_ to learn Nim. +This manual has been +written as a specification and so is not ideal for teaching Nim. Many of +the concepts in the Nim manual need to be explained in a lot more detail in +the Nim tutorial. + +Of course, it's exciting to see our respondents using other materials to learn +Nim. In particular I am excited to see that over 15% of the respondents have +used +`Nim in Action `_ +to learn Nim. I expect that more and more users will pick up the book after it +is fully published. + +Nim in Action +_____________ + +As the author of +`Nim in Action `_, +I wanted to get some statistics surrounding +my book. With this in mind, I have created some questions relating to it. + +.. raw::html + + + Have you read Nim in Action? + + +It's good to see that over 50% of respondents have read the book or are at least +planning to read it. Keep in mind that this question was answered by all +respondents, not just Nim users. + +.. container:: standout + + Are you interested in purchasing a copy of + `Nim in Action `_? + If so, you can use code ``wm090316lt`` to get 50% off today only! If you + purchase it now you will get access to an early access copy of Nim in Action + in eBook form and will be able to take part in the development of this book. + +.. raw::html + + + Did you enjoy Nim in Action? + + +Of the people that read Nim in Action it's nice to see that almost 70% have +enjoyed it. + +Nim's future +~~~~~~~~~~~~ + +What improvements are needed before Nim v1.0 can be released? +_____________________________________________________________ + +We were interested to know what our users believe is needed before +Nim version 1.0 can be released. + +.. raw::html + + + What is needed before 1.0 can be released? + + +It appears that the standard library is the biggest concern. With more than half +of all respondents selecting the "The standard library needs to reviewed and +any problems with it fixed". This is in fact one of our goals, so it's good +to see that the majority agrees with us. + +A large proportion of users also believes that the language is great as-is +and that we should focus on stabilising the compiler. This somewhat contradicts +the majority. But perhaps most of them thought that "The language" excludes the +standard library. + +For this question, we decided to give our respondents a dedicated place to +give general feedback about what they feel is needed before v1.0 can be +released. We received over 200 responses to that. Many of these responses +reflect what we have already seen: that the documentation needs to improve, +that we need a good Nim IDE, stability for experimental features such as +concepts, the standard library needs to be cleaned up. + +Unfortunately many respondents used this question to say what needs to be fixed +in Nim in general, not what is definitely necessary before 1.0 can be released. + +Community demographics +~~~~~~~~~~~~~~~~~~~~~~ + +What domain do you work in currently? +_____________________________________ + +.. raw::html + + + Work domains + + + +Nim users are working in a wide variety of domains. It is encouraging to see +people from so many different backgrounds taking part in this survey. + +What programming languages are you most comfortable with? +_________________________________________________________ + + +.. raw::html + + + Programming languages + + +Python and C are the top two programming languages that our respondents are +most comfortable with. This is not altogether surprising. + +Last words +~~~~~~~~~~ + +At the end of the survey we gave our respondents a chance to speak their mind +about anything they wish, with a simple question: "Anything else you'd like +to tell us?" + +There was a lot of great feedback given in this question from people who +obviously really care deeply about Nim. There is too much to outline here, +but rest assurred that we will take it all into account and do our best to +act on it. + +In addition to feedback, we were also overwhelmed by the amount of positive +comments in the answers to this +question. There was a lot of support from the community thanking us for our +work and determination. + +I'll let some quotes speak for themselves: + +.. raw::html + +
You rock, seriously.
+
Nim rocks! Keep it up! Thank you very much!
+
You've made great progress on the language without any corporate backing, that is amazing. I wish Nim becomes one of the top used languages in a few years.
+
Nim is elegant and wonderful! Keep at it!
+ +Our community is truly brilliant. We thank each and every one of you for +filling out this survey and hope that you will help us tackle some of the +challenges that face Nim. + +This survey was a good place to give us feedback, but please don't wait for +the next one. We are always looking to hear more from you and we hope that you +will participate in discussions relating to this survey as well the future +of Nim. + +Thanks for reading, and have a good day! From c43a7f3980ecd19ed78966f60d076af6ff2e420d Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 3 Sep 2016 21:11:10 +0300 Subject: [PATCH 088/292] Logging compatible with js --- lib/pure/logging.nim | 217 +++++++++++++++++++++++-------------------- 1 file changed, 115 insertions(+), 102 deletions(-) diff --git a/lib/pure/logging.nim b/lib/pure/logging.nim index 6a27e6af8..ad5c34e95 100644 --- a/lib/pure/logging.nim +++ b/lib/pure/logging.nim @@ -47,7 +47,9 @@ ## **Warning:** The global list of handlers is a thread var, this means that ## the handlers must be re-added in each thread. -import strutils, os, times +import strutils, times +when not defined(js): + import os type Level* = enum ## logging level @@ -77,21 +79,24 @@ type ConsoleLogger* = ref object of Logger ## logger that writes the messages to the ## console - FileLogger* = ref object of Logger ## logger that writes the messages to a file - file*: File ## the wrapped file. +when not defined(js): + type + FileLogger* = ref object of Logger ## logger that writes the messages to a file + file*: File ## the wrapped file. - RollingFileLogger* = ref object of FileLogger ## logger that writes the - ## messages to a file and - ## performs log rotation - maxLines: int # maximum number of lines - curLine : int - baseName: string # initial filename - baseMode: FileMode # initial file mode - logFiles: int # how many log files already created, e.g. basename.1, basename.2... - bufSize: int # size of output buffer (-1: use system defaults, 0: unbuffered, >0: fixed buffer size) + RollingFileLogger* = ref object of FileLogger ## logger that writes the + ## messages to a file and + ## performs log rotation + maxLines: int # maximum number of lines + curLine : int + baseName: string # initial filename + baseMode: FileMode # initial file mode + logFiles: int # how many log files already created, e.g. basename.1, basename.2... + bufSize: int # size of output buffer (-1: use system defaults, 0: unbuffered, >0: fixed buffer size) -{.deprecated: [TLevel: Level, PLogger: Logger, PConsoleLogger: ConsoleLogger, - PFileLogger: FileLogger, PRollingFileLogger: RollingFileLogger].} + {.deprecated: [PFileLogger: FileLogger, PRollingFileLogger: RollingFileLogger].} + +{.deprecated: [TLevel: Level, PLogger: Logger, PConsoleLogger: ConsoleLogger].} var level {.threadvar.}: Level ## global log filter @@ -112,7 +117,7 @@ proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): str else: inc(i) var v = "" - var app = getAppFilename() + let app = when defined(js): "" else: getAppFilename() while frmt[i] in IdentChars: v.add(toLower(frmt[i])) inc(i) @@ -121,8 +126,10 @@ proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): str of "time": result.add(getClockStr()) of "datetime": result.add(getDateStr() & "T" & getClockStr()) of "app": result.add(app) - of "appdir": result.add(app.splitFile.dir) - of "appname": result.add(app.splitFile.name) + of "appdir": + when not defined(js): result.add(app.splitFile.dir) + of "appname": + when not defined(js): result.add(app.splitFile.name) of "levelid": result.add(LevelNames[level][0]) of "levelname": result.add(LevelNames[level]) else: discard @@ -139,19 +146,13 @@ method log*(logger: Logger, level: Level, args: varargs[string, `$`]) {. method log*(logger: ConsoleLogger, level: Level, args: varargs[string, `$`]) = ## Logs to the console using ``logger`` only. if level >= logging.level and level >= logger.levelThreshold: - writeLine(stdout, substituteLog(logger.fmtStr, level, args)) - if level in {lvlError, lvlFatal}: flushFile(stdout) - -method log*(logger: FileLogger, level: Level, args: varargs[string, `$`]) = - ## Logs to a file using ``logger`` only. - if level >= logging.level and level >= logger.levelThreshold: - writeLine(logger.file, substituteLog(logger.fmtStr, level, args)) - if level in {lvlError, lvlFatal}: flushFile(logger.file) - -proc defaultFilename*(): string = - ## Returns the default filename for a logger. - var (path, name, _) = splitFile(getAppFilename()) - result = changeFileExt(path / name, "log") + let ln = substituteLog(logger.fmtStr, level, args) + when defined(js): + let cln: cstring = ln + {.emit: "console.log(`cln`);".} + else: + writeLine(stdout, ln) + if level in {lvlError, lvlFatal}: flushFile(stdout) proc newConsoleLogger*(levelThreshold = lvlAll, fmtStr = defaultFmtStr): ConsoleLogger = ## Creates a new console logger. This logger logs to the console. @@ -159,87 +160,99 @@ proc newConsoleLogger*(levelThreshold = lvlAll, fmtStr = defaultFmtStr): Console result.fmtStr = fmtStr result.levelThreshold = levelThreshold -proc newFileLogger*(filename = defaultFilename(), - mode: FileMode = fmAppend, - levelThreshold = lvlAll, - fmtStr = defaultFmtStr, - bufSize: int = -1): FileLogger = - ## Creates a new file logger. This logger logs to a file. - ## Use ``bufSize`` as size of the output buffer when writing the file - ## (-1: use system defaults, 0: unbuffered, >0: fixed buffer size). - new(result) - result.levelThreshold = levelThreshold - result.file = open(filename, mode, bufSize = bufSize) - result.fmtStr = fmtStr +when not defined(js): + method log*(logger: FileLogger, level: Level, args: varargs[string, `$`]) = + ## Logs to a file using ``logger`` only. + if level >= logging.level and level >= logger.levelThreshold: + writeLine(logger.file, substituteLog(logger.fmtStr, level, args)) + if level in {lvlError, lvlFatal}: flushFile(logger.file) -# ------ + proc defaultFilename*(): string = + ## Returns the default filename for a logger. + var (path, name, _) = splitFile(getAppFilename()) + result = changeFileExt(path / name, "log") -proc countLogLines(logger: RollingFileLogger): int = - result = 0 - for line in logger.file.lines(): - result.inc() + proc newFileLogger*(filename = defaultFilename(), + mode: FileMode = fmAppend, + levelThreshold = lvlAll, + fmtStr = defaultFmtStr, + bufSize: int = -1): FileLogger = + ## Creates a new file logger. This logger logs to a file. + ## Use ``bufSize`` as size of the output buffer when writing the file + ## (-1: use system defaults, 0: unbuffered, >0: fixed buffer size). + new(result) + result.levelThreshold = levelThreshold + result.file = open(filename, mode, bufSize = bufSize) + result.fmtStr = fmtStr -proc countFiles(filename: string): int = - # Example: file.log.1 - result = 0 - let (dir, name, ext) = splitFile(filename) - for kind, path in walkDir(dir): - if kind == pcFile: - let llfn = name & ext & ExtSep - if path.extractFilename.startsWith(llfn): - let numS = path.extractFilename[llfn.len .. ^1] - try: - let num = parseInt(numS) - if num > result: - result = num - except ValueError: discard + # ------ -proc newRollingFileLogger*(filename = defaultFilename(), - mode: FileMode = fmReadWrite, - levelThreshold = lvlAll, - fmtStr = defaultFmtStr, - maxLines = 1000, - bufSize: int = -1): RollingFileLogger = - ## Creates a new rolling file logger. Once a file reaches ``maxLines`` lines - ## a new log file will be started and the old will be renamed. - ## Use ``bufSize`` as size of the output buffer when writing the file - ## (-1: use system defaults, 0: unbuffered, >0: fixed buffer size). - new(result) - result.levelThreshold = levelThreshold - result.fmtStr = fmtStr - result.maxLines = maxLines - result.bufSize = bufSize - result.file = open(filename, mode, bufSize=result.bufSize) - result.curLine = 0 - result.baseName = filename - result.baseMode = mode + proc countLogLines(logger: RollingFileLogger): int = + result = 0 + for line in logger.file.lines(): + result.inc() - result.logFiles = countFiles(filename) + proc countFiles(filename: string): int = + # Example: file.log.1 + result = 0 + let (dir, name, ext) = splitFile(filename) + for kind, path in walkDir(dir): + if kind == pcFile: + let llfn = name & ext & ExtSep + if path.extractFilename.startsWith(llfn): + let numS = path.extractFilename[llfn.len .. ^1] + try: + let num = parseInt(numS) + if num > result: + result = num + except ValueError: discard - if mode == fmAppend: - # We need to get a line count because we will be appending to the file. - result.curLine = countLogLines(result) + proc newRollingFileLogger*(filename = defaultFilename(), + mode: FileMode = fmReadWrite, + levelThreshold = lvlAll, + fmtStr = defaultFmtStr, + maxLines = 1000, + bufSize: int = -1): RollingFileLogger = + ## Creates a new rolling file logger. Once a file reaches ``maxLines`` lines + ## a new log file will be started and the old will be renamed. + ## Use ``bufSize`` as size of the output buffer when writing the file + ## (-1: use system defaults, 0: unbuffered, >0: fixed buffer size). + new(result) + result.levelThreshold = levelThreshold + result.fmtStr = fmtStr + result.maxLines = maxLines + result.bufSize = bufSize + result.file = open(filename, mode, bufSize=result.bufSize) + result.curLine = 0 + result.baseName = filename + result.baseMode = mode -proc rotate(logger: RollingFileLogger) = - let (dir, name, ext) = splitFile(logger.baseName) - for i in countdown(logger.logFiles, 0): - let srcSuff = if i != 0: ExtSep & $i else: "" - moveFile(dir / (name & ext & srcSuff), - dir / (name & ext & ExtSep & $(i+1))) + result.logFiles = countFiles(filename) -method log*(logger: RollingFileLogger, level: Level, args: varargs[string, `$`]) = - ## Logs to a file using rolling ``logger`` only. - if level >= logging.level and level >= logger.levelThreshold: - if logger.curLine >= logger.maxLines: - logger.file.close() - rotate(logger) - logger.logFiles.inc - logger.curLine = 0 - logger.file = open(logger.baseName, logger.baseMode, bufSize = logger.bufSize) + if mode == fmAppend: + # We need to get a line count because we will be appending to the file. + result.curLine = countLogLines(result) - writeLine(logger.file, substituteLog(logger.fmtStr, level, args)) - if level in {lvlError, lvlFatal}: flushFile(logger.file) - logger.curLine.inc + proc rotate(logger: RollingFileLogger) = + let (dir, name, ext) = splitFile(logger.baseName) + for i in countdown(logger.logFiles, 0): + let srcSuff = if i != 0: ExtSep & $i else: "" + moveFile(dir / (name & ext & srcSuff), + dir / (name & ext & ExtSep & $(i+1))) + + method log*(logger: RollingFileLogger, level: Level, args: varargs[string, `$`]) = + ## Logs to a file using rolling ``logger`` only. + if level >= logging.level and level >= logger.levelThreshold: + if logger.curLine >= logger.maxLines: + logger.file.close() + rotate(logger) + logger.logFiles.inc + logger.curLine = 0 + logger.file = open(logger.baseName, logger.baseMode, bufSize = logger.bufSize) + + writeLine(logger.file, substituteLog(logger.fmtStr, level, args)) + if level in {lvlError, lvlFatal}: flushFile(logger.file) + logger.curLine.inc # -------- From 4fa3ded9c7d4c7bcb7c8cc57b24f8900443a8af5 Mon Sep 17 00:00:00 2001 From: Eugene Kabanov Date: Sat, 3 Sep 2016 21:52:45 +0300 Subject: [PATCH 089/292] async: transfer all await/async macro related code to asyncmacro.nim module. (#4704) * Transfer all async macro related code to asyncmacro.nim. * Make tests green. --- lib/pure/asyncdispatch.nim | 362 +------------------------------- lib/pure/asyncmacro.nim | 373 +++++++++++++++++++++++++++++++++ lib/upcoming/asyncdispatch.nim | 362 +------------------------------- 3 files changed, 377 insertions(+), 720 deletions(-) create mode 100644 lib/pure/asyncmacro.nim diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index cefa233be..6bea8e817 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -9,7 +9,7 @@ include "system/inclrtl" -import os, oids, tables, strutils, macros, times, heapqueue +import os, oids, tables, strutils, times, heapqueue import nativesockets, net, queues @@ -1582,365 +1582,7 @@ proc accept*(socket: AsyncFD, return retFut # -- Await Macro - -proc skipUntilStmtList(node: NimNode): NimNode {.compileTime.} = - # Skips a nest of StmtList's. - result = node - if node[0].kind == nnkStmtList: - result = skipUntilStmtList(node[0]) - -proc skipStmtList(node: NimNode): NimNode {.compileTime.} = - result = node - if node[0].kind == nnkStmtList: - result = node[0] - -template createCb(retFutureSym, iteratorNameSym, - name: untyped) = - var nameIterVar = iteratorNameSym - #{.push stackTrace: off.} - proc cb {.closure,gcsafe.} = - try: - if not nameIterVar.finished: - var next = nameIterVar() - if next == nil: - assert retFutureSym.finished, "Async procedure's (" & - name & ") return Future was not finished." - else: - next.callback = cb - except: - if retFutureSym.finished: - # Take a look at tasyncexceptions for the bug which this fixes. - # That test explains it better than I can here. - raise - else: - retFutureSym.fail(getCurrentException()) - cb() - #{.pop.} -proc generateExceptionCheck(futSym, - tryStmt, rootReceiver, fromNode: NimNode): NimNode {.compileTime.} = - if tryStmt.kind == nnkNilLit: - result = rootReceiver - else: - var exceptionChecks: seq[tuple[cond, body: NimNode]] = @[] - let errorNode = newDotExpr(futSym, newIdentNode("error")) - for i in 1 .. -> else: raise futSym.error - exceptionChecks.add((newIdentNode("true"), - newNimNode(nnkRaiseStmt).add(errorNode))) - # Read the future if there is no error. - # -> else: futSym.read - let elseNode = newNimNode(nnkElse, fromNode) - elseNode.add newNimNode(nnkStmtList, fromNode) - elseNode[0].add rootReceiver - - let ifBody = newStmtList() - ifBody.add newCall(newIdentNode("setCurrentException"), errorNode) - ifBody.add newIfStmt(exceptionChecks) - ifBody.add newCall(newIdentNode("setCurrentException"), newNilLit()) - - result = newIfStmt( - (newDotExpr(futSym, newIdentNode("failed")), ifBody) - ) - result.add elseNode - -template useVar(result: var NimNode, futureVarNode: NimNode, valueReceiver, - rootReceiver: expr, fromNode: NimNode) = - ## Params: - ## futureVarNode: The NimNode which is a symbol identifying the Future[T] - ## variable to yield. - ## fromNode: Used for better debug information (to give context). - ## valueReceiver: The node which defines an expression that retrieves the - ## future's value. - ## - ## rootReceiver: ??? TODO - # -> yield future - result.add newNimNode(nnkYieldStmt, fromNode).add(futureVarNode) - # -> future.read - valueReceiver = newDotExpr(futureVarNode, newIdentNode("read")) - result.add generateExceptionCheck(futureVarNode, tryStmt, rootReceiver, - fromNode) - -template createVar(result: var NimNode, futSymName: string, - asyncProc: NimNode, - valueReceiver, rootReceiver: expr, - fromNode: NimNode) = - result = newNimNode(nnkStmtList, fromNode) - var futSym = genSym(nskVar, "future") - result.add newVarStmt(futSym, asyncProc) # -> var future = y - useVar(result, futSym, valueReceiver, rootReceiver, fromNode) - -proc processBody(node, retFutureSym: NimNode, - subTypeIsVoid: bool, - tryStmt: NimNode): NimNode {.compileTime.} = - #echo(node.treeRepr) - result = node - case node.kind - of nnkReturnStmt: - result = newNimNode(nnkStmtList, node) - if node[0].kind == nnkEmpty: - if not subTypeIsVoid: - result.add newCall(newIdentNode("complete"), retFutureSym, - newIdentNode("result")) - else: - result.add newCall(newIdentNode("complete"), retFutureSym) - else: - let x = node[0].processBody(retFutureSym, subTypeIsVoid, tryStmt) - if x.kind == nnkYieldStmt: result.add x - else: - result.add newCall(newIdentNode("complete"), retFutureSym, x) - - result.add newNimNode(nnkReturnStmt, node).add(newNilLit()) - return # Don't process the children of this return stmt - of nnkCommand, nnkCall: - if node[0].kind == nnkIdent and node[0].ident == !"await": - case node[1].kind - of nnkIdent, nnkInfix, nnkDotExpr: - # await x - # await x or y - result = newNimNode(nnkYieldStmt, node).add(node[1]) # -> yield x - of nnkCall, nnkCommand: - # await foo(p, x) - # await foo p, x - var futureValue: NimNode - result.createVar("future" & $node[1][0].toStrLit, node[1], futureValue, - futureValue, node) - else: - error("Invalid node kind in 'await', got: " & $node[1].kind) - elif node.len > 1 and node[1].kind == nnkCommand and - node[1][0].kind == nnkIdent and node[1][0].ident == !"await": - # foo await x - var newCommand = node - result.createVar("future" & $node[0].toStrLit, node[1][1], newCommand[1], - newCommand, node) - - of nnkVarSection, nnkLetSection: - case node[0][2].kind - of nnkCommand: - if node[0][2][0].kind == nnkIdent and node[0][2][0].ident == !"await": - # var x = await y - var newVarSection = node # TODO: Should this use copyNimNode? - result.createVar("future" & $node[0][0].ident, node[0][2][1], - newVarSection[0][2], newVarSection, node) - else: discard - of nnkAsgn: - case node[1].kind - of nnkCommand: - if node[1][0].ident == !"await": - # x = await y - var newAsgn = node - result.createVar("future" & $node[0].toStrLit, node[1][1], newAsgn[1], newAsgn, node) - else: discard - of nnkDiscardStmt: - # discard await x - if node[0].kind == nnkCommand and node[0][0].kind == nnkIdent and - node[0][0].ident == !"await": - var newDiscard = node - result.createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1], - newDiscard[0], newDiscard, node) - of nnkTryStmt: - # try: await x; except: ... - result = newNimNode(nnkStmtList, node) - template wrapInTry(n, tryBody: expr) = - var temp = n - n[0] = tryBody - tryBody = temp - - # Transform ``except`` body. - # TODO: Could we perform some ``await`` transformation here to get it - # working in ``except``? - tryBody[1] = processBody(n[1], retFutureSym, subTypeIsVoid, nil) - - proc processForTry(n: NimNode, i: var int, - res: NimNode): bool {.compileTime.} = - ## Transforms the body of the tryStmt. Does not transform the - ## body in ``except``. - ## Returns true if the tryStmt node was transformed into an ifStmt. - result = false - var skipped = n.skipStmtList() - while i < skipped.len: - var processed = processBody(skipped[i], retFutureSym, - subTypeIsVoid, n) - - # Check if we transformed the node into an exception check. - # This suggests skipped[i] contains ``await``. - if processed.kind != skipped[i].kind or processed.len != skipped[i].len: - processed = processed.skipUntilStmtList() - expectKind(processed, nnkStmtList) - expectKind(processed[2][1], nnkElse) - i.inc - - if not processForTry(n, i, processed[2][1][0]): - # We need to wrap the nnkElse nodes back into a tryStmt. - # As they are executed if an exception does not happen - # inside the awaited future. - # The following code will wrap the nodes inside the - # original tryStmt. - wrapInTry(n, processed[2][1][0]) - - res.add processed - result = true - else: - res.add skipped[i] - i.inc - var i = 0 - if not processForTry(node, i, result): - # If the tryStmt hasn't been transformed we can just put the body - # back into it. - wrapInTry(node, result) - return - else: discard - - for i in 0 .. var retFuture = newFuture[T]() - var retFutureSym = genSym(nskVar, "retFuture") - var subRetType = - if returnType.kind == nnkEmpty: newIdentNode("void") - else: baseType - outerProcBody.add( - newVarStmt(retFutureSym, - newCall( - newNimNode(nnkBracketExpr, prc[6]).add( - newIdentNode(!"newFuture"), # TODO: Strange bug here? Remove the `!`. - subRetType), - newLit(prc[0].getName)))) # Get type from return type of this proc - - # -> iterator nameIter(): FutureBase {.closure.} = - # -> {.push warning[resultshadowed]: off.} - # -> var result: T - # -> {.pop.} - # -> - # -> complete(retFuture, result) - var iteratorNameSym = genSym(nskIterator, $prc[0].getName & "Iter") - var procBody = prc[6].processBody(retFutureSym, subtypeIsVoid, nil) - # don't do anything with forward bodies (empty) - if procBody.kind != nnkEmpty: - if not subtypeIsVoid: - procBody.insert(0, newNimNode(nnkPragma).add(newIdentNode("push"), - newNimNode(nnkExprColonExpr).add(newNimNode(nnkBracketExpr).add( - newIdentNode("warning"), newIdentNode("resultshadowed")), - newIdentNode("off")))) # -> {.push warning[resultshadowed]: off.} - - procBody.insert(1, newNimNode(nnkVarSection, prc[6]).add( - newIdentDefs(newIdentNode("result"), baseType))) # -> var result: T - - procBody.insert(2, newNimNode(nnkPragma).add( - newIdentNode("pop"))) # -> {.pop.}) - - procBody.add( - newCall(newIdentNode("complete"), - retFutureSym, newIdentNode("result"))) # -> complete(retFuture, result) - else: - # -> complete(retFuture) - procBody.add(newCall(newIdentNode("complete"), retFutureSym)) - - var closureIterator = newProc(iteratorNameSym, [newIdentNode("FutureBase")], - procBody, nnkIteratorDef) - closureIterator[4] = newNimNode(nnkPragma, prc[6]).add(newIdentNode("closure")) - outerProcBody.add(closureIterator) - - # -> createCb(retFuture) - #var cbName = newIdentNode("cb") - var procCb = getAst createCb(retFutureSym, iteratorNameSym, - newStrLitNode(prc[0].getName)) - outerProcBody.add procCb - - # -> return retFuture - outerProcBody.add newNimNode(nnkReturnStmt, prc[6][prc[6].len-1]).add(retFutureSym) - - result = prc - - # Remove the 'async' pragma. - for i in 0 .. -> else: raise futSym.error + exceptionChecks.add((newIdentNode("true"), + newNimNode(nnkRaiseStmt).add(errorNode))) + # Read the future if there is no error. + # -> else: futSym.read + let elseNode = newNimNode(nnkElse, fromNode) + elseNode.add newNimNode(nnkStmtList, fromNode) + elseNode[0].add rootReceiver + + let ifBody = newStmtList() + ifBody.add newCall(newIdentNode("setCurrentException"), errorNode) + ifBody.add newIfStmt(exceptionChecks) + ifBody.add newCall(newIdentNode("setCurrentException"), newNilLit()) + + result = newIfStmt( + (newDotExpr(futSym, newIdentNode("failed")), ifBody) + ) + result.add elseNode + +template useVar(result: var NimNode, futureVarNode: NimNode, valueReceiver, + rootReceiver: expr, fromNode: NimNode) = + ## Params: + ## futureVarNode: The NimNode which is a symbol identifying the Future[T] + ## variable to yield. + ## fromNode: Used for better debug information (to give context). + ## valueReceiver: The node which defines an expression that retrieves the + ## future's value. + ## + ## rootReceiver: ??? TODO + # -> yield future + result.add newNimNode(nnkYieldStmt, fromNode).add(futureVarNode) + # -> future.read + valueReceiver = newDotExpr(futureVarNode, newIdentNode("read")) + result.add generateExceptionCheck(futureVarNode, tryStmt, rootReceiver, + fromNode) + +template createVar(result: var NimNode, futSymName: string, + asyncProc: NimNode, + valueReceiver, rootReceiver: expr, + fromNode: NimNode) = + result = newNimNode(nnkStmtList, fromNode) + var futSym = genSym(nskVar, "future") + result.add newVarStmt(futSym, asyncProc) # -> var future = y + useVar(result, futSym, valueReceiver, rootReceiver, fromNode) + +proc processBody(node, retFutureSym: NimNode, + subTypeIsVoid: bool, + tryStmt: NimNode): NimNode {.compileTime.} = + #echo(node.treeRepr) + result = node + case node.kind + of nnkReturnStmt: + result = newNimNode(nnkStmtList, node) + if node[0].kind == nnkEmpty: + if not subTypeIsVoid: + result.add newCall(newIdentNode("complete"), retFutureSym, + newIdentNode("result")) + else: + result.add newCall(newIdentNode("complete"), retFutureSym) + else: + let x = node[0].processBody(retFutureSym, subTypeIsVoid, tryStmt) + if x.kind == nnkYieldStmt: result.add x + else: + result.add newCall(newIdentNode("complete"), retFutureSym, x) + + result.add newNimNode(nnkReturnStmt, node).add(newNilLit()) + return # Don't process the children of this return stmt + of nnkCommand, nnkCall: + if node[0].kind == nnkIdent and node[0].ident == !"await": + case node[1].kind + of nnkIdent, nnkInfix, nnkDotExpr: + # await x + # await x or y + result = newNimNode(nnkYieldStmt, node).add(node[1]) # -> yield x + of nnkCall, nnkCommand: + # await foo(p, x) + # await foo p, x + var futureValue: NimNode + result.createVar("future" & $node[1][0].toStrLit, node[1], futureValue, + futureValue, node) + else: + error("Invalid node kind in 'await', got: " & $node[1].kind) + elif node.len > 1 and node[1].kind == nnkCommand and + node[1][0].kind == nnkIdent and node[1][0].ident == !"await": + # foo await x + var newCommand = node + result.createVar("future" & $node[0].toStrLit, node[1][1], newCommand[1], + newCommand, node) + + of nnkVarSection, nnkLetSection: + case node[0][2].kind + of nnkCommand: + if node[0][2][0].kind == nnkIdent and node[0][2][0].ident == !"await": + # var x = await y + var newVarSection = node # TODO: Should this use copyNimNode? + result.createVar("future" & $node[0][0].ident, node[0][2][1], + newVarSection[0][2], newVarSection, node) + else: discard + of nnkAsgn: + case node[1].kind + of nnkCommand: + if node[1][0].ident == !"await": + # x = await y + var newAsgn = node + result.createVar("future" & $node[0].toStrLit, node[1][1], newAsgn[1], newAsgn, node) + else: discard + of nnkDiscardStmt: + # discard await x + if node[0].kind == nnkCommand and node[0][0].kind == nnkIdent and + node[0][0].ident == !"await": + var newDiscard = node + result.createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1], + newDiscard[0], newDiscard, node) + of nnkTryStmt: + # try: await x; except: ... + result = newNimNode(nnkStmtList, node) + template wrapInTry(n, tryBody: expr) = + var temp = n + n[0] = tryBody + tryBody = temp + + # Transform ``except`` body. + # TODO: Could we perform some ``await`` transformation here to get it + # working in ``except``? + tryBody[1] = processBody(n[1], retFutureSym, subTypeIsVoid, nil) + + proc processForTry(n: NimNode, i: var int, + res: NimNode): bool {.compileTime.} = + ## Transforms the body of the tryStmt. Does not transform the + ## body in ``except``. + ## Returns true if the tryStmt node was transformed into an ifStmt. + result = false + var skipped = n.skipStmtList() + while i < skipped.len: + var processed = processBody(skipped[i], retFutureSym, + subTypeIsVoid, n) + + # Check if we transformed the node into an exception check. + # This suggests skipped[i] contains ``await``. + if processed.kind != skipped[i].kind or processed.len != skipped[i].len: + processed = processed.skipUntilStmtList() + expectKind(processed, nnkStmtList) + expectKind(processed[2][1], nnkElse) + i.inc + + if not processForTry(n, i, processed[2][1][0]): + # We need to wrap the nnkElse nodes back into a tryStmt. + # As they are executed if an exception does not happen + # inside the awaited future. + # The following code will wrap the nodes inside the + # original tryStmt. + wrapInTry(n, processed[2][1][0]) + + res.add processed + result = true + else: + res.add skipped[i] + i.inc + var i = 0 + if not processForTry(node, i, result): + # If the tryStmt hasn't been transformed we can just put the body + # back into it. + wrapInTry(node, result) + return + else: discard + + for i in 0 .. var retFuture = newFuture[T]() + var retFutureSym = genSym(nskVar, "retFuture") + var subRetType = + if returnType.kind == nnkEmpty: newIdentNode("void") + else: baseType + outerProcBody.add( + newVarStmt(retFutureSym, + newCall( + newNimNode(nnkBracketExpr, prc[6]).add( + newIdentNode(!"newFuture"), # TODO: Strange bug here? Remove the `!`. + subRetType), + newLit(prc[0].getName)))) # Get type from return type of this proc + + # -> iterator nameIter(): FutureBase {.closure.} = + # -> {.push warning[resultshadowed]: off.} + # -> var result: T + # -> {.pop.} + # -> + # -> complete(retFuture, result) + var iteratorNameSym = genSym(nskIterator, $prc[0].getName & "Iter") + var procBody = prc[6].processBody(retFutureSym, subtypeIsVoid, nil) + # don't do anything with forward bodies (empty) + if procBody.kind != nnkEmpty: + if not subtypeIsVoid: + procBody.insert(0, newNimNode(nnkPragma).add(newIdentNode("push"), + newNimNode(nnkExprColonExpr).add(newNimNode(nnkBracketExpr).add( + newIdentNode("warning"), newIdentNode("resultshadowed")), + newIdentNode("off")))) # -> {.push warning[resultshadowed]: off.} + + procBody.insert(1, newNimNode(nnkVarSection, prc[6]).add( + newIdentDefs(newIdentNode("result"), baseType))) # -> var result: T + + procBody.insert(2, newNimNode(nnkPragma).add( + newIdentNode("pop"))) # -> {.pop.}) + + procBody.add( + newCall(newIdentNode("complete"), + retFutureSym, newIdentNode("result"))) # -> complete(retFuture, result) + else: + # -> complete(retFuture) + procBody.add(newCall(newIdentNode("complete"), retFutureSym)) + + var closureIterator = newProc(iteratorNameSym, [newIdentNode("FutureBase")], + procBody, nnkIteratorDef) + closureIterator[4] = newNimNode(nnkPragma, prc[6]).add(newIdentNode("closure")) + outerProcBody.add(closureIterator) + + # -> createCb(retFuture) + #var cbName = newIdentNode("cb") + var procCb = getAst createCb(retFutureSym, iteratorNameSym, + newStrLitNode(prc[0].getName)) + outerProcBody.add procCb + + # -> return retFuture + outerProcBody.add newNimNode(nnkReturnStmt, prc[6][prc[6].len-1]).add(retFutureSym) + + result = prc + + # Remove the 'async' pragma. + for i in 0 .. -> else: raise futSym.error - exceptionChecks.add((newIdentNode("true"), - newNimNode(nnkRaiseStmt).add(errorNode))) - # Read the future if there is no error. - # -> else: futSym.read - let elseNode = newNimNode(nnkElse, fromNode) - elseNode.add newNimNode(nnkStmtList, fromNode) - elseNode[0].add rootReceiver - - let ifBody = newStmtList() - ifBody.add newCall(newIdentNode("setCurrentException"), errorNode) - ifBody.add newIfStmt(exceptionChecks) - ifBody.add newCall(newIdentNode("setCurrentException"), newNilLit()) - - result = newIfStmt( - (newDotExpr(futSym, newIdentNode("failed")), ifBody) - ) - result.add elseNode - -template useVar(result: var NimNode, futureVarNode: NimNode, valueReceiver, - rootReceiver: expr, fromNode: NimNode) = - ## Params: - ## futureVarNode: The NimNode which is a symbol identifying the Future[T] - ## variable to yield. - ## fromNode: Used for better debug information (to give context). - ## valueReceiver: The node which defines an expression that retrieves the - ## future's value. - ## - ## rootReceiver: ??? TODO - # -> yield future - result.add newNimNode(nnkYieldStmt, fromNode).add(futureVarNode) - # -> future.read - valueReceiver = newDotExpr(futureVarNode, newIdentNode("read")) - result.add generateExceptionCheck(futureVarNode, tryStmt, rootReceiver, - fromNode) - -template createVar(result: var NimNode, futSymName: string, - asyncProc: NimNode, - valueReceiver, rootReceiver: expr, - fromNode: NimNode) = - result = newNimNode(nnkStmtList, fromNode) - var futSym = genSym(nskVar, "future") - result.add newVarStmt(futSym, asyncProc) # -> var future = y - useVar(result, futSym, valueReceiver, rootReceiver, fromNode) - -proc processBody(node, retFutureSym: NimNode, - subTypeIsVoid: bool, - tryStmt: NimNode): NimNode {.compileTime.} = - #echo(node.treeRepr) - result = node - case node.kind - of nnkReturnStmt: - result = newNimNode(nnkStmtList, node) - if node[0].kind == nnkEmpty: - if not subTypeIsVoid: - result.add newCall(newIdentNode("complete"), retFutureSym, - newIdentNode("result")) - else: - result.add newCall(newIdentNode("complete"), retFutureSym) - else: - let x = node[0].processBody(retFutureSym, subTypeIsVoid, tryStmt) - if x.kind == nnkYieldStmt: result.add x - else: - result.add newCall(newIdentNode("complete"), retFutureSym, x) - - result.add newNimNode(nnkReturnStmt, node).add(newNilLit()) - return # Don't process the children of this return stmt - of nnkCommand, nnkCall: - if node[0].kind == nnkIdent and node[0].ident == !"await": - case node[1].kind - of nnkIdent, nnkInfix, nnkDotExpr: - # await x - # await x or y - result = newNimNode(nnkYieldStmt, node).add(node[1]) # -> yield x - of nnkCall, nnkCommand: - # await foo(p, x) - # await foo p, x - var futureValue: NimNode - result.createVar("future" & $node[1][0].toStrLit, node[1], futureValue, - futureValue, node) - else: - error("Invalid node kind in 'await', got: " & $node[1].kind) - elif node.len > 1 and node[1].kind == nnkCommand and - node[1][0].kind == nnkIdent and node[1][0].ident == !"await": - # foo await x - var newCommand = node - result.createVar("future" & $node[0].toStrLit, node[1][1], newCommand[1], - newCommand, node) - - of nnkVarSection, nnkLetSection: - case node[0][2].kind - of nnkCommand: - if node[0][2][0].kind == nnkIdent and node[0][2][0].ident == !"await": - # var x = await y - var newVarSection = node # TODO: Should this use copyNimNode? - result.createVar("future" & $node[0][0].ident, node[0][2][1], - newVarSection[0][2], newVarSection, node) - else: discard - of nnkAsgn: - case node[1].kind - of nnkCommand: - if node[1][0].ident == !"await": - # x = await y - var newAsgn = node - result.createVar("future" & $node[0].toStrLit, node[1][1], newAsgn[1], newAsgn, node) - else: discard - of nnkDiscardStmt: - # discard await x - if node[0].kind == nnkCommand and node[0][0].kind == nnkIdent and - node[0][0].ident == !"await": - var newDiscard = node - result.createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1], - newDiscard[0], newDiscard, node) - of nnkTryStmt: - # try: await x; except: ... - result = newNimNode(nnkStmtList, node) - template wrapInTry(n, tryBody: expr) = - var temp = n - n[0] = tryBody - tryBody = temp - - # Transform ``except`` body. - # TODO: Could we perform some ``await`` transformation here to get it - # working in ``except``? - tryBody[1] = processBody(n[1], retFutureSym, subTypeIsVoid, nil) - - proc processForTry(n: NimNode, i: var int, - res: NimNode): bool {.compileTime.} = - ## Transforms the body of the tryStmt. Does not transform the - ## body in ``except``. - ## Returns true if the tryStmt node was transformed into an ifStmt. - result = false - var skipped = n.skipStmtList() - while i < skipped.len: - var processed = processBody(skipped[i], retFutureSym, - subTypeIsVoid, n) - - # Check if we transformed the node into an exception check. - # This suggests skipped[i] contains ``await``. - if processed.kind != skipped[i].kind or processed.len != skipped[i].len: - processed = processed.skipUntilStmtList() - expectKind(processed, nnkStmtList) - expectKind(processed[2][1], nnkElse) - i.inc - - if not processForTry(n, i, processed[2][1][0]): - # We need to wrap the nnkElse nodes back into a tryStmt. - # As they are executed if an exception does not happen - # inside the awaited future. - # The following code will wrap the nodes inside the - # original tryStmt. - wrapInTry(n, processed[2][1][0]) - - res.add processed - result = true - else: - res.add skipped[i] - i.inc - var i = 0 - if not processForTry(node, i, result): - # If the tryStmt hasn't been transformed we can just put the body - # back into it. - wrapInTry(node, result) - return - else: discard - - for i in 0 .. var retFuture = newFuture[T]() - var retFutureSym = genSym(nskVar, "retFuture") - var subRetType = - if returnType.kind == nnkEmpty: newIdentNode("void") - else: baseType - outerProcBody.add( - newVarStmt(retFutureSym, - newCall( - newNimNode(nnkBracketExpr, prc[6]).add( - newIdentNode(!"newFuture"), # TODO: Strange bug here? Remove the `!`. - subRetType), - newLit(prc[0].getName)))) # Get type from return type of this proc - - # -> iterator nameIter(): FutureBase {.closure.} = - # -> {.push warning[resultshadowed]: off.} - # -> var result: T - # -> {.pop.} - # -> - # -> complete(retFuture, result) - var iteratorNameSym = genSym(nskIterator, $prc[0].getName & "Iter") - var procBody = prc[6].processBody(retFutureSym, subtypeIsVoid, nil) - # don't do anything with forward bodies (empty) - if procBody.kind != nnkEmpty: - if not subtypeIsVoid: - procBody.insert(0, newNimNode(nnkPragma).add(newIdentNode("push"), - newNimNode(nnkExprColonExpr).add(newNimNode(nnkBracketExpr).add( - newIdentNode("warning"), newIdentNode("resultshadowed")), - newIdentNode("off")))) # -> {.push warning[resultshadowed]: off.} - - procBody.insert(1, newNimNode(nnkVarSection, prc[6]).add( - newIdentDefs(newIdentNode("result"), baseType))) # -> var result: T - - procBody.insert(2, newNimNode(nnkPragma).add( - newIdentNode("pop"))) # -> {.pop.}) - - procBody.add( - newCall(newIdentNode("complete"), - retFutureSym, newIdentNode("result"))) # -> complete(retFuture, result) - else: - # -> complete(retFuture) - procBody.add(newCall(newIdentNode("complete"), retFutureSym)) - - var closureIterator = newProc(iteratorNameSym, [newIdentNode("FutureBase")], - procBody, nnkIteratorDef) - closureIterator[4] = newNimNode(nnkPragma, prc[6]).add(newIdentNode("closure")) - outerProcBody.add(closureIterator) - - # -> createCb(retFuture) - #var cbName = newIdentNode("cb") - var procCb = getAst createCb(retFutureSym, iteratorNameSym, - newStrLitNode(prc[0].getName)) - outerProcBody.add procCb - - # -> return retFuture - outerProcBody.add newNimNode(nnkReturnStmt, prc[6][prc[6].len-1]).add(retFutureSym) - - result = prc - - # Remove the 'async' pragma. - for i in 0 .. Date: Sat, 3 Sep 2016 21:14:29 +0200 Subject: [PATCH 090/292] Fixes to Nim survey results article. --- web/assets/news/images/survey/book.png | Bin 73632 -> 54231 bytes .../news/images/survey/book_opinion.png | Bin 60929 -> 39312 bytes web/assets/news/images/survey/breakage.png | Bin 42872 -> 42032 bytes .../images/survey/planning_to_use_at_work.png | Bin 65840 -> 47859 bytes .../images/survey/upgrades_broke_things.png | Bin 71148 -> 0 bytes web/assets/style.css | 5 +-- web/news/nim_community_survey_results.rst | 41 ++++++++++-------- 7 files changed, 24 insertions(+), 22 deletions(-) delete mode 100644 web/assets/news/images/survey/upgrades_broke_things.png diff --git a/web/assets/news/images/survey/book.png b/web/assets/news/images/survey/book.png index 32a5ad40c5069c451a344afa41a40afe86f2ce2c..5bb418e635f81bfe3eb8445a81a8c18a7123d12a 100644 GIT binary patch literal 54231 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

a!$8Jx(f4gtU@m0U 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 JIZw1a{s&&!Ub6rI diff --git a/web/assets/news/images/survey/book_opinion.png b/web/assets/news/images/survey/book_opinion.png index 9675388fa898daaab3904fd3077821e2c7da9466..4e56ab26efd0930b8e5dbd59352d0754b319147b 100644 GIT binary patch delta 36038 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 TmHTo9{3j(Q|FrapVZi?ZA+amP literal 60929 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 Oy@jc*Nu`m`#s34(0CZ9S diff --git a/web/assets/news/images/survey/breakage.png b/web/assets/news/images/survey/breakage.png index 76977c91eb60918ba2582fc08a308e3f3aaf06a4..5eb4c5289a0d9c77ca5569dbef8af91279a153f3 100644 GIT binary patch literal 42032 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 X;{I^my*~-OrW7Gs+gshT^o;vI1{m^7 diff --git a/web/assets/news/images/survey/planning_to_use_at_work.png b/web/assets/news/images/survey/planning_to_use_at_work.png index be3a50467adc2ae77a78a027e2f17ed2c9c4f598..b3e2001c357a75288c9b5ca3876cca5bebdc4589 100644 GIT binary patch literal 47859 zcmeFYg;$(S5;qD1!GaC$GDvWD9o*f61$X!0?(P;exLY7-2u^SaF2RFKZ~}Ko-fwr$ z-MxRo{W#4zL(fy)Rn=9$l75I(R+K_PB0z$If&(#i7Cs7iIFKgJD6M9nn6KHN2Y4QYpV_8e9%=zKx9ORrY+zWd7rxW3i{_e3QB0v zNOE-bqoKke8(d)3K2k)G4Ya8WP=$dZsMCR=jONhzOV~&@WkAit$j$i8Sgx?eIPYbi zi-o;8lyZ{=B5Y1~Rht5mBIrxHwG!+tRcCnm&9) zaknvTQv3LGK@;lnF<@kktK7UJ~IqHr&Y;M?GxSCsmz3k zBqrq;tyZv`hfA|;$2FZLf9)mL47??Zr)W;!Shgz6&j3F7xyLbA;lG0l0HBUC!y0SL zrI3$AoRfTMVJMizT`Dr_SlQSI<}lxPR+lXUWg5D+ zvb&!2DJd2f3I{z%z2{XLMV3lD&rbwWp(3!*EhdO*2>Q}nFL?f zo2wxxC9?5ePA9Y#6tqw!<^@|Pixsok_;MaT`l-BqDP#~F`q+SH9r>aBLP)@kgDZL6 zUhfg5-fa=DPqdV$=svjsr5;5D;wLbJCqpcoF=w@_m;GlZSncso3o}&Ns{p)fwl^wX^7NW^k8_nwS|a-?`$T zq`OWVCI$(^eznK4F!{`weFAK#BBz$GyE4E)#R)1M%7d<6p1%BB13-Oy0fEpxTYOGyb6s zN((})m(XU_jM6Z6(`NUX*J5G)9`D;1$wO?hndayV_k)#(aAE-WN9CDw2Z2M+@;Uu2 zj1SbaY(B6F0S8t~l!g35f^3Eu4JZZU8Y2#4yr*+U&QppK1794o5OXCPvCnnWXOnJ| z%UG~JbwSKWoQN_}nt<|k5-R zh0q1!h1rGLMM6$ePGU}_UMrE5{f8BTHbLhx=k)FOJ7F{@hkx-D*u?^@(XbEWF(~qlv(_+vNsPdGlH=T_&m3%VWOk-gNs@&xr5jYkb0x=^}y4aG`OeR&F~yMt!=e#X~tC&dU&mPU!5Nq9OzvcU%kJwImqM4Ab29cCphFF;5@O~%-YRT zH;SpP2C{H+<(ylZp({a}`0_WKm-ERLnalu-3*?bpfk zX_@)OG8fTOrSzJ^g3+1PGH=xzUbWbtW8X~ESeG+l-oJe>@*dQw|6c#S*gf?<>;0?y ztNR;d8n|&dS~x^lHL5TVevX7d9R7 z5iu3hUR#y1lkt+lhLKd8wMw)asfwW5K#?OSgU4yLFD}xsnz)L+`bK-bUZp-rDo^D`%!KlJm!@vQE0ekQ*aKIqZpzp6%5x%3E!_UK_$-8HDI68YH za8lA03v3&ed6ls=c_HzcU8JC>orK|so_{6yD&pyQ8+PUmqy{bmyA`MuV>8~eUda?I zYzGa+(Y&9nD)Uu2E%Ys%7hjKLjRp2M_0tU~##cxBlJ4Pt5>g}*X7w|A?1vqLH4s$; z(Xw(mIc#olJX>X#Tq$~F7;yZ)M^46fvB=3Q=Vf=ryB2- z@8f>m;Qzqa!2g=*lzFAIT~%CV;)Cr6*X`Rfe$>|J4T}>53glVl^j5nLU=eTSh9AyM zoJpxfis#D(sZA*r!h4Z;VSAD8_KoujXn8UD+wTcndeQF*j-d@bn+XZ!33l5Bt_6L3 zO~UZYpw$N0K;xydY#iJl8tt79%T#V4tCLm#>jrQbboI(1y`RyBX_iS(^>)9sC(k+> zD=I{SJFT5@y&horMR%%s+I}Z3)i9d3A6K?YPF7B+*0}cbS>xD*nJ`+dqRwjbfYaD@ zb6@jg^ZdM5O{GC?hmim8A`~?)4qH=uhP7MwnJR@nxnnsG+Y(zGJDl{;G)_C#l?M0G zy^E#`8*Cx$E8XUnnw5J$LW|{{V}s>Gcgs_n#dE7S4trzzf$aozvGj5tm>zq_ehqKj zl?Iu|yJwH)R&*O~a7V}TLMcq2T zHRlTFRh{&XZ?iB{Fhk#jDedMF*+i5z>b>1Y-ONu0tK;p0t`@`ky{ntvvNy7)HmkLdUytJ7 z*B9O1!gRyuq7{*>dG-1I+H@M)ba7wlLgtr$lX^CHcBtXNv8LYH?7z%~$Ljg4|GmB7rk|8UNZsG{Y2lpq zWM-y-H%}&Sv@65c>WSdu>csK;SzQ2?sZ2Zo&(=~F397adDxa#S5vF5M1`|Uk$Ip4WFPa$I@0GC`Cgo9&^nxX6Iy}g-5!fpp|ShC@|tL zAhiObqqL3-6ci5C%P+KyD&-jz6yTMWy0)vff;^vzgB_ERse`c@lc${{{iDBQj4rTYDEiPeIV1C-@+rU#6KsWPcuUwGjkqD=3qRIXIhw4a_VDmv@?d9jaJFD(<>lpNW?^GyV`GFo!RX>;?`q`9 zXzxPtcai_Ij<}hNiL;fXtCfR2*~_{{#tv?-f*{b#M*sTx%cq&A)xUSLclk#wh=9y5 z-!QW>u`vHHGFL0}{|~a4Z~l_~k?Zev0xyg4DO-7(+3JW}*_qk9Kv)yvWaSa~v(0~f z^KVA~gHrq7l&mbgT>nY>A7A|k=?g1-O3qeh5G}pvLWos>`M>7=d0v3|MN$8uxWA|J zXBKiSLP!G4|2kqJB)Jlfa40A+l#IBDx+nBe?rXgijr&1=8qe4A9OAQ+smR=n?8EYm zz2B1LqxEK*t2&M~t zhr1QFFkdsmgUblS&oJ^EoZva#$=MUwdl*N)eA?xmIHyek;9!tJ|BrFT259cE?I2=8 zOn~|y0}nwN>&NRrSm}WO8a?!g%2?+kqvImU|BDhrXY=1gkeUBW_kZ>BKP>J4&-QZr zey5Dr^8f9fXU2eX+**^F8+_?mGtiwa7aQ9Z96=y-7lMreDewoh=j{nNgroehKZVED zfowyKrk@aQgf;1pGkW4fU+s+zmi`hsYz(w12fJqpjN=N{7{WUHvkTVXsHfeclU}>QMgly_!S~+mum0gfai9bKx6Vnd zd#U(528K^v!>6e6@?My}U$+N?*<{Ddc{;f47~fe=1KG{v#ijADyrN*~!~zPX&GzdV z|JWpW4x`TPvbK<$%@2<0x2caQC3LzQ$S)^FI_|OJYGSVQZWhO=nA5QcfijRdVBixW zX<#?EWQq2*Lv-qnm;GNP^u!KKT^=_XubA193{QcRkcgGX^JIs+NY4eE_<7?qs?EypK|@KY+21F$6MLSke8(R@hH9D7e&Zpk2%38i!aD^M@>*XeLBO@X*X608S|=m|{L z6_mZ@k70_!Q%W!ZGO)?=ogoK|vqVl4wl;ELw(4=o3DR zmGtD41*mY*rhNo6=57a3KwK;cd(t-Ijn`XEe1F z#B;bTIGrk-WYOx)?u;buqHIflEc&d`t?=3rElxWkLXJw~XHo(3Mnodv6;0j%siN zW(a8_)Yq|T7hU|~^f2#2?f3AuI92DZpR)&2eHm;jt+*Ke+8T)nnM(RkHeq^e{<;Sq z1_BJ*3%T$}cHDPge$nnm#F1a(WWNILyLpa@qDK-nBJiUfB;-_yJ(jZPE7Zv3@MDc8 zH^gwcpuUTvju1y4EIp5$qh0(ACEqoXmeNQtXkNWvzVUC4-h-M( z$*N-W;1vuqyIQ5UC#i!ae;tG~6$FOu`1l^aBDdZ)jp61*kYd{2gTldpz(*It-_xU$ z>S1%w{NuNfn;sV;bJm$rQvh7qIUe`Ks-Se!U{f>#(C zZMzbkY~6a%YF&}ZQz;xarWd3SpOlzbqzJbex;l(ul@x>0XwoyxPL=R}2YUD4Ib;AP z;j4m_xY(PABR+5mljH;8{bn3FD!=ZU;psA z%DJ&nJW3-(YT%vnw=K{8KyP{A8=SGWpUtp%w42T8A7I|RI0zDYT?|5N3ha>|{;h+{ zyJb?dD?A;MupsGI`R^?;-Ky0#x0leMHJcLVdwDWRsA>_bwYxN%Onj*S+OjGj5ZbyT z(nfa2?xFDR`1srSD^4U92OC1SW|a01O4-)KzjC<0n@o8EkE)}X$Z=){Q6%Eyeq>3A!c zeGVVKD8+2cT)w;X$pHWIGvZ2m7Qh}BChn_QMO^6eBgSx*n4)+s71Qer&n;~lxeJ}w znF_Hkht3Nk?iUD4kplmouBDpmpc}m-Hb8!S6iRUE>PQnf9fKYBrw_^$xR!_Ydwv6y zmW1J!=18PVtEJrnJ}JF~2g(gm03?@LaJh|=d#~K0uj@0_*Tlf=h-yg`Ro9aw_<;{S zzK`9@a5|^5SUOzm(MA$+0sN(C*Alu}} zWRxPR_8*A^@&Pjz)@S`YlP`XdFACdag(izGvkq@d%plj)0*BfmAyO;~?rciLn3%QM zRr5M7n^*oUk2EjNb$sGfoX5=?Gu^|7QtT$4^v5}cL-L_B z&Ofn{@*QRVYFUK?Unw{AA!X!lI*?7@{NrP9En7=t0{9gIUWwkY&HiY6Y%T58QX!8j zbb_tui_+pS5v){k(cIj-JPT~;mTQ;_rY1nsvocFjQ~NjfvXDM6xOPIsdYUihn01LP zq>Rqjyd#1o6CUVlVHlFV)E7q*N980lq)I;_ovr3=!fKX78P1*JxU%~F&Q^ZlZd(Ml z^*#n(pW(CY%Wh2M`3hDv4Cv6N*k@nYsf>2xnSMq|%JhKqouoF#wPL-be70}!k2$3U z{-Utr8^;q>COAd@5S#g((+*78;Lpu<)^EKzZ1hT}zbB<3i#_Wg!trluz1e(4sHQW0 z!z42QrE%nh-jm1uoQp_9d9m2TUxF%7TJvBT^{)DaNTCf95;&gRZjFY6UaWqGt_~$4}y~Uk<+~8jYqJN!=#xKN~DYAreB5j4V&0D_EFtLYy1&F}e46i$|VrFfX-{r(x*Ly|1U)Qr6! zh$Vs|_?CS|88jzIOycnBZK1{AJ$7(niARZ@9|%fDd0y@8ZO8<`b|eK{S9VZ`m35$X z6JN<<5jAC_x2kmQuU&CR5&>0eH0>ngT8GUF2qFA)M)!=^?XgGTh%{J0|$_!=I-%H zE~Q+_$$5#2OVtO-da`zc-KJiQbh0n3=mypp^Ai9urzY$LG*DpTZii&D+9QtU~a~t37Rh_p(pKL z+|JSPzv`b@`mtAVx1cI7U-1xlytLKoC=K(KbPT~uI0&;HKj>UyAj(~n0%yA?xF9ZY zqwsV@j2^sSugo`(S&%aKTjwI!XQo^=F6WqKx=Z(5B5<4{u5`m%E`+I2eDJv1XZ=S`b$aM1&|Fkr?jI>% zA(n|($ehZ8=H{V)HzN@kv162p!1@qE0Ue+}#l!em&*caH$F?<;V3od9SF7wlI+g)P zquw3kp$lX2bPr~Jw@Ijea&~#dm}EmPvm^NKAPfUf^(_A0hjuH4OaBcNqiF1&3o~H& z(Cif{Fqcl%Cl818iES$FQXmO%c>{DrhhSHFej#R;n0uJ zB>5{ywWPZA5n&xk{F>pI!SQGvL=#Kr*R`_;{uQt}*wp#h*s~-ADv3Zaa-bcBH)C#j z^{!LaIV6J1qnUp3YwcwqBgUO_RR=QibE%5$;$2J!^^@)qgGWd}6hWJmc-``V^lSvB znc3g!=7o_!RRorfY|Ka=XP0NY~Q3y;#WX+tV$HlkMf;b zTtWanK@)-U&h)AZ=k$N9SGwm#Y3C=06H^d#Xyu2#qQ5z34xICVvfyfO|1@`KXezJr z>@EIyE1Gfq6V28d#fJ$9dTYg8DC#>CXGVxE(XfeQlKuP&M%TZs_E{8AYg}q zjHMcBbU7K~BBkqPF0>zMfYic$Z;80=?ztLx+*gg4n{<|Iw^>Iix*VX6sjMYZ1=V6F z9@qT#)mtthkV4 zx&8yQ@^vNKl>~`dYF$f7<6@74Fp^>P$h(WEx+-J2MWm-UQ#2kC(imha3`RFtkwmx>vplw}S5)3bx0FFr zf+`~Sk03-*v!83@peXz(N<9s~yYb{~&qz%bvpvI@iN|hZ*pvml=cWjib-?NqtsGf8 zW`SD0!9vuF(pElz4GyeK?II5f6OBMKMPkl%qz59EZx6MD1 zz9yy&96{em>PRgZYASn4}pt`A^|~y6K`tr2KVK zM!Ir^VgGu!gj>2o=~}s@T1w>-KOdB;q`qo~aq`I~`m;&v4Y)|a^jh?Iy*&M&lWu{% z82`92-D@?pbf0?OSj(Wa!yok=9A9*vVRdHny`d^gKng%27f={6Xu!v(2nj3auua)@ zvksKN?PO;(+YIg>=U<&Gp|xLw26yFBdRjra?Rm5#GX~8y+$_DnHA;8aKnM0f26kL5PmXfxH%=dD$RId?RBOv($Zs13qmtayC-IMsyxlvHk-uCjSVq6v# z-IBIf#I?H+u6yKwSyvMKn6O3M6OS?xfO4Fna8O5MJf~rkNj>uboDl)O6SB9hUy9Mt zA6*Tvg{l@;R;fJjA%6-xh9c>hXb5w9=!n^(kK{6T$_dC4ozX9;{_R)1Ww-bzkr4># z+0l3&==V|^iASZi6Tsk{HeEsHAg~;9(sZD&f{ zqecu*rh*z4Zy1Zh>`LdJ#ZS2*4`|M@ifQ@l^+%M-WQWx!?-3Wsxs9;Ik3x3A%@L&0 zuR&6#8W|Wt5e;v8hh-yMd8pg?qp%}Kq=AV))T~Oe`CT!qE5`OPFAkUD-zby<0@nrY z8sF9jL$h5;A%d*w#!!LcWbr4|BHNquJr8VG2M@mos1-=lv7Jw7zUT0}V^t%&$}0)m#A*kXk;@b_Yayq6!7q7F&jN?Latcg8j2CIh35 zV>WD#B*YqLl&8^OAYws=?1uYYkvKBZeR?j6_82)p#Uh~Hp4qx#j~PVM@wUm(Snk5R zZyf{>Q`&I3yE?qIFxBm9vr8z8CZv#WmPp}Y7M1h**cE{@_C%*J!ns&dh*QAVdzb{K?3zP{ERKweG?P@&W zLP&Zt8QrKp$(I@Mn~(h88bcS@6`*i_l+EK5PYjS8_KNSPw3uZS83DaIHP%R(wD^mxd4 zNk5M$cqBRHJ@cpc*gZtSCJJPhTsVDAs_eiztVeXT5Z0NKD3m=R(mRSVl2XvOvO-!C z>|PZOq0yOhq*Ti$pzyY{-MK~wmNZf~L=-xGBub=esI4!WO})sfKT%uCmH_f<=@yEs z4|m)9>^`SbBsdM-8g!loPsLr6)Z}Qi{OPUGy?LkYu2s#pwOy!LqtZgJHl4x-`uNR? zV}MTc*@Db|SUe=uLp*-16G%+V7{9g;oFbXROb2UiI+SR*oFoNcL(&ROaI4%)(xyn2 zZ(lN-)Lz=1mMUiI7HwmZYyDw>1HcS(^HyBOG$%>Jj1sB1{hN1--wN{}%G+>pZOZJL z@H_;HPEE@Jab%!~>4r;*@7<17I<2Z$<#3uwVXB0 z4uTsxMR2FqyzCRs)tbhs5fTNq#c&#g?>R{_8@VbQq3&(=sdw!`6xpBOqflG1s}pBR z7AXyUvj^e{$_iPBneA6ZrLMaNBY0T@w|$+i*kwPlX6b77^kpH-0e&e*Mx_gQhtC;C4{w1 zPZMTkKGjuoIi#5B*+g5a==MdxF-9rcXPIUk8}m$x`{4PYdm7jZT{-}H<$EQbWHLXT zzf;M^(DjH&z_b&1e}TEx(D63+D6|17mR5XQ1nASd21k<3EO%Lf1RBc0VGZr~f}Qo& z?DU8qPN74h7~hhWgUGHSN#?!I&2(7F)>8Yh8kBfC&i+tRGR5%8gkY@3i`h7nwik9k zSc32x{6@_Z^>{Hr#@AFRu3(?VeliHd|MOU`Q!s25#9iwFz4|XPz!3>r0bM4^wBp?P ztAQo&{1;lmNog|#y>tX*F)!R((*^{Tw^h~hVpDyo9hVJy7lxFw+gC|~W^ySJnirh9 z2LaoZI!~?QF&QA`S#sf-S)AtF1|040pN~Fz>UO^YQdPv>HkqVYo2gKKrnJv=>UMY0 z$+~%_JeAIOdVb)JdQF2<-Kv8KIOrr4#!@~tL!wB98ZLP`V-d2Oc?zb(7Pc0bOGvUS zZCI5_V0G>A-W9)cs_ZQM#y&v3@NUB8a~RvL!fNad6Zl5n^Bz#}p!wVctzKztdSQC%3Sc@>*dKSo?cj%M=O@Ajvh|jp^;WHNo zcVA6Dvc4NZmY2ye=Bd95-^!R29QurLBa;sc@ocJuvp-p;dQ!k=oh3$IrlehsY4mI@ z+Ccfpi#p`{GTXiPKuN`+uTvLA^3}8ys}Wyv4189}(b6iY>Kw8VC@{XvD1c)AxkM8H3JOv}W1O)7nh968+2V7} zmbqu&6O8dorwWvRXC>+K!|<}A(~Xne{xAlbN@JkhAcIJU3NUedv00kb01WZ2L|VLX z+|;+BZ(iapRA3%1;rii$;KU!;x0laX%ywtG9M5b)nX&BU)Jp%c^RqI6iCu#+TBz1? z@y_5ASBrpIz1@(2ef@+21`Xr}Gw}ky9_|GkQk3%Rz{Z?;@No=`-Ap!+8BZbTD+8s3 z4yJ?7f7X}H_p{JJ9Fyp8Yl)q)jH!X6V0C|mVV0U{{8`$d#*1?OMA&4lWo3vr(=>z6 z#4Bc*QkeuI!47cK>yHHS0r$;3MzD^*iY}}#1YYh3K#sq}yiU>f)U&c&6?h@H(MGV4 zj2lmD-1)kd(m(4<3+6G7LJ@0iTXZ4gFyq>_y?DmGT*ea@>QKecemNY?PCNOAin#Ul zYPa*56$(gou8c+d3K{KB|Dz4IY4T3rL<0RTf90U+C1Zy{q%ks`e?1Urm50dbm_dZ` z(iy@yd)AqIbeKA3wp`C;jJ~H`4kn&~(x^D*J!j$il13urWRDL`1l5mb-XwnIVhxlMe zNWch1vC!*T3qUB4xow|_8qpIqaKNPGOQ}fYl?}ZBl$qS3s{&$go*8GB@r*eG-vOIF z>$lGcT*j`?BnW7)#RhABvw9TaXko-j7{-W2NbuVyfpsA5r4)(qy_ZC=2L}RacTb!; zd~R{o1Ok$f9N!Lh);f&yRfI*oqmH5wa1o?K@>@%9($d9%PbI}DoS0HuNy zHk&ibKjj@5_yVR`Xh$Skt~t6dD#%Azd0=vE_u;b4!!G`7nxY#Q75-bB0>f=8Q_I3Y z@vNBaKuMVABNB>f3-T*lf|?y@KR*=oNe+a-E1Iy@!TxgwW|}C^?^lJNUT{$c+&+A_ zqxLTQJ~SxH+06j;S^;n(1NMtNZUeNMv4jF|I>5i8U^}w@T`tfker%FwvL1@dZh$KEF04BNdxR9$sTf?KIh&e z8~v-f`fvL_H{3tK)=%I{d1%*>}+a6&rLFJvgxJ>r#| zx0}wEknK{*9PPR5m}EuQTDanrC%TZxob`U$CC9(ClWZ}^CCcOdjy^4TW6e$ zKcP8}cuIBe3Q>-~3o=s&|Eth@0kT&5vzTpwrK_&lXJg$z@DJMXZ$zlRFZ8v4xg7o* zvUwpo)`-g?hBS6tUqds-4~2TEC3ydm%C`UAV$C`p^YgXudphM$KqPqS&a)p}hZkfo zlnV+Q-}h9?3dIRNN%@I%6=Ys#ntnpj{P&4-K$cCFl!kdxrEE`vl1CcB6@S-H!cC07qxRC-o6^z8}tu^e}W-hhvRu#MtpoK;y=HN z9Al~SGiwB*{e684!a{2lluJ}=6vOcg=Yr6``#Ey_KEosVwVUSEHrs5KII%l!1tbpK zcT>R_uAyw3FU)^vhInE}c8`JwG@2jWisx%}^`Y=^;elJ?T7rxf^=?FW;bvlyD~Ahv zNg~M21$YiPB!EaM*Spua93U4SkmG8yeiekQVr#jEi9iSo+f>1qw}6SL4g(Q&4k}k4 z!iPFDv>SV&U!sDq8G6m}+EE?*Q|AZpq~TtX=5M%wCxW^kz>O7d)MXCXI-Y zPQBoTnh(iz^J2*f^Q3%aMOmRb#Yp=s;-BWpG9d4N;1Qfagyl&Ff2ZBx2bv~pMa~5| zGmQ2H)dluI?k=7Rc4l|1FwW!w7jzbXkmMAUZ_icZbEOgr3zVR<8BLeQpL*R^N~J2^ zyZ)MV8P)auSUZ_>6GYk9z_MjnPfy0lWBp*VB-bA-_P;mcAPoyP91m;yG%DXAD~{_# zGe(G=MWOSM=Sk&xut-Lv&_|S^igTz;QC7rS>t+@Thf-k<8XqkfWwer!q$;sj57toC znq)L^zd_|qJ+B7Yxg@bl-D_@THY#>u;?V2xq+0t^IytWZkO`?<%xlCnS@~DWks!cV z5ybWY!3sxufc4$#>*tD`h(r&)aQ3exeRITw+i)c~NE9V7zFlcf_pNi@cLfOIn;=q-;a*)Kk}=Pm zlUHz6R5z$hCAk1~jk%4t24MSYgkz9AjpkfXQT^Khh$Cy?O@>LxYEG*d-HMzYCZr`2`BO zZ@%@Ff15%5Wb)!*7&IbaDvj!)luV2;dH57Yv&JYnMM=ISH@Vd*hteDQAg%L%ZJBx~d#H)mYpe2)q!_#-|K4Wy% zru&ec{abwq11Sf?U2wrc_KBjF_Sq-yr@00PcTBA66Bwj#l$y#st zx39e-)Yt>A-~1pAVxk`yKDyp&%zU=@j z^RDYCQJ@oVyM25}5|fNjrbmjqtKgKx`S49or;*4)QV{9)9XmKTjK;^9)N$GJfuIrR zrBp(XlT^c`n3N-(~FTEG?npZD2Y~N7N=6G=?3D|Lam(_RrR?8dB z3~l^3%;qXkKodv>K~DLGRCMJ+20_y;2;~`<)a1Q@WUPU?(07YR)gxX?wRf)Jbr8(S z&6#5)jBPv5>M^RZUyI0W!s5q7+k9tCWR9k?8D7tz*D}ZPY7n>cjX(91PgqyM)yDdd z2~`i6FdL>z{mw8|9=GN&EAUqerZ-x;ALv_SCtRrAw`%4QPC{eS<&IK%_=WWcX^yKigf zRUGdM>DwEu9_}X|obKCb^yF5^?{I92ly~sF&e*fvyb>TF8H`Xy>vYqJ_UkPoDNu02 zG`BzZ`8Wuh?<%^=Wpw8-oz-n38?I={BFn`)pA!<`2oyG^$>&ifQd?5zd4-Lh*zA}_ z(EEJ3poxRjNfO^99139^YAFGxr)6W9e^&NSzLika556&o5LFh`p&R%_(pw~Hyqs0O z%Qb4w9Nz!Ckm@Aung`sMhyOOv$Q1oKCOcmupHym!I+38`7sPk z>V$imIW(I+G4)#n5YQye_;`EmBNFKP{(uGddA-Piv}oO`KHEuE?o*N*vaWnZcw!eS ze{z(u1ghVSKma z(onPP68;oFV`)46L*!32B@Iwa$JScHDRohNGL7TeXMfNM(LtfCn}Lc!`@~0s&v0$y zakL+-^}O)qGvL4tFJiGI+jswZ(=*L26#@C!#*PR5_+(lX{BGU3_ie9+&86A#8~HCi zAEqKW=MYI7iSiU8f~5IAVtM;kBc#8N@HCAmU)T2WSEc&&iVYQ4A}B-ASng42K*5)d ztCmHU>dV(6pyubTw`!j}OK3K6(gPJ=(xq%jBZ`)RrYF?n`M`E2ZW&XUY1|)Wk6Ji9 z$mSxQJD-z%S(MC1UME)PzjRWx^Dg8Pb|ibGMLxWrA+lCzru_ED)bc` zd5J8a=^F^fQ!0h1BXR9$mQG+HO_8BZRIFY7m2ee#oz1;- zprFgWfG((>?M`L=c{5lHG#!TyJwD3DOif*3Q}JltH$JySIt`w$ zS@hj}klnU}c3690s5J%*uNT~mHY%Nn`jTR=F zDVj_@^4u?xB%o6AJzpY)VL6*_#(HUCCdch1#)SmL8)dHcKJf>J**P+v65Ll42WWXj zCFm&ZsE$*0T&*t8&GNTHURphq2GrzK9Lg>OmOuF=qF)^Q>5SEiCko)N6KILh@}+7~ zT2r3%BbpGz6wZWI6H(eRTfbpkDGgEToy}0(pY&j(#s zdDRJYS@WAu>1#ndv7&NGest(Bf(U3<1aG2QSbuQ#hCe+K{$rAulZZO>H4vi_5j}Xm8T>j`4T&5HpHw}Us0~N6p?YlZ$ zg+CYMtyI%k8&R<$_SSPP^xU-%-pD_zEzVeuG+6OyIWct=++=C3$;c<1R#g1@8L1g2 zoj|toyKG?D6Ulk*{VH+cv1eZ+{Tew5t0NzzHdVevupHGe@HurO>yEigx99kk^PAu4 zei1&w#WT;x;#}fKa30hRvkL{om8X`w@gkuwF+k3@LB7wSlBfS|zm)GcY ziwA`3zgIV+uQT^>;-(NGmU2UhJ~_hjd*bJK`P{D*JFT?$#Ai$DjN}KB$oqo8^I`m? zc@TW*HItP5FW2l&4}!BKUS7-IDrmeGGSqUNi%#Xd(Bjrt`>Wk$t7nnERQi=Jaw;cr zXmw;j_<+>jF>CB~uGVU7LEMlZP^DJQ3x2LW2BR=?Gob%fI`* z<9z@g3nRm-9cjA9Dp*dHqaqd%^Q05&se?WJBG}sE?PB&#-D~;rbvY0Ffr{SU`rrU% z)Nz;$Doh*gYSqq$dmni~^N{(I4G^bN|x&jqvpJTX-d||GmuF z=Nmmxa?R(}R7m4$qXhOO(aOVb7d>R;{~_utgW~9#a04L$lHd~D-JRg>7Cg8G_u#s? zOK^90cUasV7I$}dzf0cl-di<4wx)_1PMvThrEY`m5DG>_NC|d2)Y}5l3$WcM@=|nW&&o;C`?0 ztP@*9jP*RZp-uaT2<|I+M2FWa{buD#anOQgw`gD%GlQsxb3ygA303D#eP9N~?yvD6 zB7u>1OLmi~xMI}lJF6O9h0-YOGjNG{D^zF>EQMq8%olxE(@E@G_CE#5kKDO$FNUcZ z56EBs7(!aaaCsGwj*ElYwA-W}gx<*#>jCj#AZ)#S?zcPdyu+==@}(X$PV0HhQiRiD zdc!xMX@-Z@5e4phGT;gMn#B(S^dcB9KL*3S9xw;HqOg1(rB+*i%UU7-gd1Gqk#QsxPX{zm;7XE{Q`u?lcl+eFKE2Bd> z7?I;HWN&Y~kh=Xh)c7-uCn0-IB>_IK8`%emt0CwPEU?W0^Rhj@`6IZ0$Z(bUOMlit z*^244AdAd#CgJ_!AmVI}FjvE3Cb9kAB*K1|IeSgwv0V=)DfyfgG2oF_lJ9`_^+?0 z4X9EMwzjFcM;hS$85w6^;j2 zc#Rr`1IKUWovR$XQfcdJY-dD9 z_TS6AW5C5x9l>?{&(lm!y+khlJg0?}%v6H84t#EAHSn;`s1U|IKV3jx2Q*-3HcFgn z^|_j@e-=YPSS!ni`qF&h-h1HQr2N9?MRxZOJO>=82I;f<6&WvnJGrIL|CHdJA= zS#$3kMikxLAk0tfU@>!pV+qOJ%nt>hS3bTZZKeP4`{Q9X@uCMM_rz|tLeM_7JuGOQ zB1|B$@XLxz1so_<3arNyQXE&o@H#;LO~?qWTIx5LnVeyxa_!5i54Y+}7k~{zzX%%^ zp_k}rgZZ5f6|D+s+yIe4GQ~!|vY(+I-)ifY=^~dyuz3jPC5L`#yAT8;KdtB4b^|0o zr(u3uJ>u*YL>8NNQ?cQ-$6HQV%=Q;f=ch>*P+B3!F2fXu@zlc-H6GmpYObUIhr%w0fs63$Ed=)9zwPjZRHuuY zmU9wYwM~10B9T$CXpLNRmA0eb4e}h?SjO)W&7TN@iUcwi_1$p10p=O z@K;cr7+-&)WuGQdFSYCL>KS&R!5qIDkJuNxQ0HCN+`0D%@f`s2;t(m0lM}~3rc-0ma&qE$tWpN~fyCgq-VVBvk{38Lz zh{Aua=NO&0YFH%^i)- z44vsU-yXcay8V%xzBz6E-f8^;4Gd2is%~?=x4{4Wd|BnjDODj3#>YXXP{Kn~&F#$P zi@7cKsFCgq2nlw85_oIP)x8sThmHt73$}8V-Z&G@u@u~Q$NT{ng!7K#bIe5(6GBuF z=>{P$V4ubL1T{}^@VSS^?q&bI+S0xUU5e;|#5!L7d>jB5DL$~YeRsZu_9e*vb58T) z-rD|!rn>J7(P8wPJt3?uc>{yGUj^XZfPgQXzu^7_9H_p-cL|0BeZc#_vjF7yLy-M_`kQZzjLnP=)Y)zO92!a9XG^$1cvjz zJF3^wSg(=agu&>%e2J9@l5n{s4X#4M_cxy~%4O(im8o|f^Py4_PwA02^LXnp5W+5C*K|52`SUa7!ot-POG1~4P z;Ie}}Z-MZCae}}lZ_X*X4u(pV%k+mKl*40zA^HSvcec!Wi_I)ZHeZS-w@wW+|*WY3ZRuTJ6)RxZj6r1!daBP>Lm zF4}{uP^>smIJ7cWCbP4xZNh%>sgQP(cwqb!8^Q&Q`ir5`TkHgP` z^im3Pix2EHTqM*CRTwZVMRQOR`J)LM~MPzW<6h!8J<|l-iOU z5G3dN6S1mU<+~l7{%FNp4uO8Jf6M>gpc@J{HyTRL;Ob?ECG2y(Ytho2R)QsSNQ~2 z?)tehAKGTY4MoBAH11k(+}Z=(f8~3Jn2O5K=y>lracjQkVI{l)ufn`iCT^kXE7s%-Y%caNxaJ8$=6f^)%sdFPTPB`&k-FW^9*9r;I` z%OU~8nfO95F(#+x0MMkvM)8Hry0rK|7B7bg_wCfAE%G@YBvt3(Oqz}&qU{u^YOvWja2`KF z^<~L92jmEI4r0ud&5Uu)!~}Z*Z+QBw^9yS@AMtu#Xuz*Gu`fhu{H~OH$g}uw$>4U$ z`6^ggkP;-=qYE~S<1q*a#gYe6d@hbiE-zdxtdFDQ7_`OUvY_dUzzs;Eju~Rh8RB*ZnU9PERA1|Bof&srQOe<$Kfc8^GDi1GD5>kugl_i#9^R#)0V7% zl=0SbLvDd?9#3e&QqwLzJIK6o>b(>n1N-|mQsQG;2n!$n_qDXJ+BvaIf~VwVcga=n z0!1&QJB~VREMka27?33m^{{yPU#qKi#TGhvt!K;zPaCfK^wrb9m@0HcmCt)X~QKO%@CD3mwuj= zAY?sWi++xeK_FA~79(Rbaki_wPcmWX_WF7P^3zUfC7_PqrBW$PABIyP} zR9ak5+u8jF6|13vg9EREMAf-h+Yex znm(ZQH9&j;*Ta@MM7TzckqbE?M_n_|2l2gTUw;1l<>hqO9*9@sN+hK-)9#?W^0y?r zz%SPNuj7fkvVAWv*dQ(^dWBpjwjSO5DHx7rg+gP^wov+^FMQdm5l=Zj-b*?BF@6cy z0hj;sVR#E|ajc7cJdD3o7E27|9fyrpy$>ILsO~k{7n_h`YJc*_inXy&i*bH*eioy+ z)As)tuL&X5Y^(SMyoD@(EqFq@^gH}uJ{Hh?G0O2`z?te4-J@maf(BMh$(TSPLA_^`P#w6=ZM66K+9Qay-$+b~@)^R%{J35A; z)$c5nILgjq+eId6&B_KQqhqTh+9rK#z%6l4f4{+AGG8_)xrnMmY{&||p8{3L=l*~6 zgHss-^P_~*6J5CT@^v$^v9?DR$PB>bxY=rV8E_%^%eAULzDgijEN~QG0(T z1SdJ(=sbp-u7p6YJD$ffOs{31!+ZY{b&1B>EBXkJ;7O-2dsBRtcYZt&N=acRL^_Gm zQg|r7y6HHpH&2=J&N&$bgKkJ-d#YP{?C{Rfj$6tX{uE3i&65;B?b?=lDbk%!i->G8 zEX&3u1A&^|ik+W4uxJF2<{^tdH7=#I;Clb~*i|7Q!~zHFQ?`1&8CjeY!b^=yKCbC= zS?SrG4+BRjQv8=~N^%iXo$v)Dp&1Qa*T9$2@ax*GR8lV4Ji_;z`13g-CMtw^uL8sU zvTO~bOwc!XZz=>&?chMXpOo(E92d=QU9$IhgcwQT z{q&W+xQTt16rHRDsMmj z{a|Q~$`mihE_+k8PiHixAdQQuT;9I>Y8gh)V~V@#Vn?QrBD2o=1Rm1B>GmbS5n(!F zpau_Ge@}0y$G?)}GHB!1`RZGi;$K=0LR{?l_K4tV)nD^5GMG;am~OE<^PzJT^#%WL z4ur}p5oApKSkC~36d;tjz4)KWr?ME)!S9)T<-7wN6o(cC!7@S zCae=LZN*N0JhRe})!a0vF3|oSY#2~cq1A$tk;(`Ph_)9q+O(5I@8l(LTV)x}R+uUC z>^2n_tM%a_Ya*&%_2B>umIsrOV`wF15QTa3yjoC1P+zlRA4&NmH?44w8B~GYu#9lA zT)0?!`A114;n+472@I|e04-zUY&N|te*z*tCR35`p_6S~L~IKx(Q1Yj;)wE5Eb75& ztdO|m<;)dKIk@yU3ug0}Zr?M_-)u=gAsG_TLQDtV_6cA8xDLu#KzM)dHyPvvJ^nd% z8%h6;U*FTDL#xq+m2feif>zt4Fx_m4F(rnPRt+lQ1cYa#dPs6Fs4{-!;XUwEgmg5JUvWz`9A(WSD=xL7CynN*!;YE^A;wSkEtMnHfwD#c5|)Yt445sOhAXS9edMpUVu(-naB9R>!xo|fh$sVWqIt$Vn z37h#5+loEdEKGxiVrs>F(QBAj;e)~rm2t}Lx6%?5h0y@Bt5UU9X;Fa{=SxZsi}G2@ zKCDPMLdTCM(0+4TpfrhHlq+oBRw_K$TCqW|hw0?(56Ny>L_eWcHHeR-NpiO{43oO@ zK>T2E!XTecEW36ZcR6@Ls7vN0H*2J-MBNov`$z|M1%<;1$q^3~5aST^X8)N*D%dVi z-$mizB?a23|1+33PEZAol=yED2Y75zn+5|*3hZt}x|WZ`!Kl-eal20!_uz%iv{nam zv~jM4*c2f|KWy!TZz-MK2b0B5kB~flq^&-DrTCkTxb=mI5L$im&+Zb&s2tS4z2B$R zfU|#Uk-ee$vC-krf{*&6N>{Xe`C2AgkFY-O@*~q{JF;t$!Xg=-x1ZM@ zdgx@PPJ764@NIJ+t^mUD(O+i_@Il7O+NZ-(Vsj?x0^?i@E+v4H_ny> z)aQH`5)CeS3!w8IyNL!x3MGg8St0R2;C;W(#qL#;3#q8p4`Ym{iBlLBdla8Uc6~;n z>8RhwDHftb7^C@C8s6dgc;8-S_rnnZz8_&um|)ClouzeJSN>x69{>ErP7$Jnh?4@Q zKs2WF&$4aNr<9)s^Tdj*4<+EQj}(e!$#H!IH6i)SiT4axinP{A{;@vS=axlH_K(nNH(f@KmXTvBUB zCgI-!iyz+nh<&u_f&TJ+<78=IA14)#6S)$pBa0JwI#IzyDjcd(wJ_n#unAFHU&SA49jY<_mxzRzzHzxi5g3uTma!$;K*$Eq#lHdyq#>dhxGdunR{P2P zd3Ijt*x%oX6AjG>#U=&OvGr?L%xLXa6{PrM4SUWw!Yjy`W=mm-3dbf$ zEAJ5?9KD7;p^8}8ZODUF#*8dePEO=>62D~OtE06<=K7_`d;NvXAU|sopR`|m9{)F$ z-}4s~>ZGaimeT|ZDg4G00jRFPP-ixLULf4xl#I}*lz!cliyJ%^ujIXAb^qPv85Win zfv-K~E(Y5{U;`0?(pcn)lB><5`kWba8*6Edy7rSboDBV?0NZ-CK&;(25dPNp=B1@V zN6XGhBSO1tAUcca&+4r`yqyp<+aK9p18ES<6$k}7S(0v|ZJ_5Tc1dsS$yz50@{qo{ z=3J<&lhWZ}tC<=01maETNNiP{?>&bBgMOBTG-XcysA4eR;5=!DRB()8q*jTxeOw)} zAx{R~QSQnfn2sABg7%*KMt9V$q?A;1-5Sz+`#@@ft21i#>_{>Nt%2$gW!{989dnUj z0CK_H|Hh07qCLPXna*yQ;C|o-pv@hpt^Js~eOt45Fy}V0%967QbA0u-w*Ox09loU! z%hb|s92Q10TvF?02sbiR#ZU~O=^maY#SuJcP@nL!IJ^pp^#=3#>GI6QNPQJX3YD!w zV2L(@FkdM+8_Yx5+Rgpz+pU9U7c~UOmZhjkBf>_8b>`eTiY{p^5|pl3nm9ia+t-ONt7jJk zErC6@yo`py+!(snjyO$ZN`TR$MM*0m@VxBIIOwASrHqdyoH(=59`pb0JpzwyYiu@G zoN*jj#UZj`^`uqsVg(G^ zCqdG1)#9MEKbVhVXux6m4^az(r)g+P!}~%V6W9QT@q*-v*6Ck&=2h#{RA~w(p};)} z{+;$!jcjq(D@wo>fGClOWC#-nc?=c$LKY?)k1_57nR!W~Oh(WrC$_}E6!c}mP^ZuK{Ja5qJCmdj3Js%|A(s9L0hdUt zjn~jo$`<>B-wC9}L0&^#KW%uR7uH&K5gI+ZP5iO<&P4XVFUhwXa?o~(WnH9>n!GM} z*2ap}h-45Ga8{>^-lp9iJm9I9qit-|B}iHRbb9_=yBHt9#)9%MsH{aQ|d~TRCj2hA3`+Jb!hE@fHM?+{uozzVNxfvBiFl>_t_ZR#%OGM%F z9j)#y^NehQ&42{1jS*SRxTEeomzDF)2~uPm2yZYFE(J<=7v*ZANExbU4z? z#Z#yyMS{0H3s_#omh8H2uq7C-HSiqjDsCu9ygNOcU2L_C;6;S!o_yL%ObjfALLx9Y z>rbTP^vx2V7aH6T|MhHMH@4hvOZ>6QdW;F*e4%xF<+YD8G)s~F0iE=yqd>%?&Rm}R zphTo?iY>*@FIo1W(s^bTc?M+0jI}p*B1q$-5HK*rY~t`6TQmW}H{ zYVFH?_^GS?&D?|)klZ9Y*;mteaIpl}GRNi-E z)U!*QO8l1X#pto8LdJ!xJ+lkO*A=kfh9@CiYOA$8?h=`I8!GJBw_~y)u!6wDwIKYq zU%xI4>n)n=O*!f8v7`Mvcpxe!t2??X5SX?tt@!xlaBR}I-9 z$QR7XU?usj95AgCCfYuyO2k17?W%S|&T5L=mz=E*a;f_w|LY)M39aRe2vQ3}6}X#- zUm3Y@%$>-g->Pr)<6=^vhRG@wa0BH9R{feiT`4gO{ZKfLtJ zX5;0iSB_Kf?6Uvro5ZgxX1WhIJF5N#5g#l+b96GvG_rdCh5mWJEkJNBk2+wVv=D5E z)bvRB&HylPXj^FlLrJZ;5dCtH+9JB@bM2k&r8+J+x$j6!IiD{woh69(q88)=vIXC1>a*6;3D+BM`C1_jTXK+Rv2!|JS$S2!+fy*RtsQOl0>} zbZwNx{2Yz~&To-07+lMh?Ym5Kjn(~~62FxtGGX9$cTeyVVbzShis;{zCQkLj2?3B` zzM4m_5*sBwg@EI9-!5q#_+HN_XFX~K5$s^@r+}@|nV1o1wlUoB@{?{j159q)q=)<5 znHUk>^ZqURa7O%4)`vA(8t^oyk2DzAC8@k=+Dy^isE*b8n;&Wu%%_3oEW2bTRTLhT zkE7XDOE^N{fq75UL;wfs{7ffdH^0CJvB=jg68K&va7k|{Gg`5*b~=Jv5!KcY{pg)u z59@v0gR49xcOgq;yOm9B^3dNBf?wY>2P-4WW5F5Y9SS(|0l@-#@+1&8dOFyn(hRtj z8^#-_-qsgtsR0eyYeM@GP3P81lAlg&3R>jnGQ*_an8`4R_^Q`ZBT52*A15+fNO)Nj zf-xxE&ru{AA3S%$s_Wd4&!Z?6(h9OF z&s6T0Cva5Dbp$Htvl*}6mRb<*DMFtkx7M!lU=Rr)1g%40d~^j6g@r|sO6T3~WUFjl z$T!8GVO-#z)o|OMoAk%+a8vK@ui z`t2XN6;{J6AfGAFsDRa@M=j?yk904QFKnEhZ_mB#Ey9#@7e#DzEq+9Ii?Jr9H%9jD#CZn6?n=XA`H z3=P=9Um`Fhfj&<8l}WAhsChTek$0iD+Mgqrl(V<`)R51D70h5UOK&ghJ3hX4u%z3~ zbtpMH9e1TOb=>_CUS0L66S!nD3Vb4MyPK*oyVEXsb8l@u6+cU}VrF%!2VjZ6NaYxh zO-kYOWJV?3jDK3?a=*nH{Z=@2w`elTc*A3(z0R)fcoM!?Dx)I#(i`~Fqvo9_$w53m zt@;&jk}~HdDcx%hdK|Pu@9}#U{vy0|kmp>o&Hm0JM!k6LnKFEm**N8XZQ2^)F0STu z(qH{_9C~JU<>Y+f@nkt|iPw2ollK0Qz8Jq_S{PfpuE{{U^(+2dFA8MNdH=Kw^WJjV z-D)!(!Nm@s%%Q>7NY?b6o=`&-PmIv(1EeK#;bN=yZ~>g9B4&%5%@n2_<(rR$z-}VC z>5H0&(zR9&ve>JL$64x*Rzl8YSxTM$7(Ui9BKsD{O^a*lT@x-Kt;hiZI*i$((s zwD-jXP5g{-!B2J7`K%fB3>{c;FpghQjP<4?axzni>3WpfQk$SQUS(?HA+?H~*AZ3@lk)OqWql<}*5KgHTW zS;t)c^S$v+3c!3_arbrbasT;E5fG!QetnCH^|tdYS`oOnac4}UVC9-{t|UqeL$D6x z?FMYrnR_|=>@or>G9Ki@LeVrqf4ockeQYp>|e%enHmM~pX<>28E<4$r z2<9nMrSnyEn%{aGuMRs1VNKtfZ#d2P_EWXc5h~Q9xf$K*)JlKA8us~j3N zo7f2T>rVjfjMuP88c}Mvp4}%2<}YP@@-qII%~ONY%$#*U4{?IedMx=ZPRMkDZC5zP z`NN5R;tn!(<$yg=+=t~bL=s`yS%BOfsj$WI?%5n!eY)%O{G*@v%&qm!kn#9YO!(`F zNcmW5)z6!c-YFFM!3E=sPrZwNLDqpCdcd2&)KV$Ydt@Swc%IThr@e#Sad*XqKaUwj zYwSaI>2+^%ZLmmjZ52&Ol0ozHYnr2|$&b9-c#x-vm4jgbX^%=}MbqP0Ot(@4WTN`v z5v9mhpI4(~2>=@EHfsuERbZ~sE(LjiY3FR0U(j7*Dz`Q6%hUHnD8Xr1q!#NH6{XX* z=Q3%JPh`Aq788ErD-b{~w79%o+3Y_fn}w^6b#{V1v(ZUM)^cxJB*Mq(MJ*@hk(bs* z-d1JOLG#sz!&NWKuVB$ZOCXhW1bl#uK%#gec?J}^6_2nl8xGeUjDI&>C?YQby}1;_ z#(|fTFK`jhgUy3+eS7DRkQOd4~}`Zea`jo1hcU zgwKIJN6rj!C%TEsHozcaWSep2;#5XmNiSn~s?dk>R`$d(!jrSh3C&Ax^`#8`J|m)o z_9#U7LmCy5jaLVf2f{QLIdG%xkF->|SgT!sbR;X^BHPLy?)cbYTq z-){06mf9}Qc;~2U#>5*^P8A;$gD(>iW^Es0av!Fb%HY3zsp7x=z^t_k%iQS{>(o3# zJ^Ypvqr*!K6*o4q#SF+RS~07^p)K4f=zhWMWPR-ZT2n`}p2)Qd6o*D1nIpL>iRD|T zka2&qrj-=LVcnL0vE9r?*SWM&>bC;c`3}V&!aaS;aH3WTeoFu@zNOk<2z)PT@c7mG zbI$##{qZ}IO=J`i5`Tdt6b_N@+{cHdtUHra&$*)o{Pby!67)k2JBQftyp&cXM~S0S zLJnV6;NB1GOA=JoBwH8}n6APMs^x2ne$koav)#i;vuiAbZX$jK5}FYupAV3{$MK-al4^ofZEZ(vb+doS= z`IowWu?p?*irK+*irgF#&lpOUeEHp}?7I0xzNDZ(-ER~=)9C;kMbrjdCo~Lek~T=e zVf>RB;B+}ESH5^(bvj?PE%JC4f|krO5;h`^o7+8=`^iBfG|jQxZLH)Jrw6G_DF4Km@Ef6 z31~sfSdilEB{9?H5oOBJp2s26U0vc_AD{YL({^^DEKmmsYwaR`{gVkJ9=$b@=d8K8& zII^98HFn^3&S7hFcgsXcMjX$x@swC*oSTZoP>})>?5IV(Ulq$iAH8eHG<^Op>Zrc% zc*h?P@)9BwP$Cok3K99>z4D#njcRHw?bK+*kW@xa;vzDs6rZ6w#lOMkP8q@cC^gV& zk>ltOvriBAk=jEwTN_aGq9$Fj({StXPHIHHZ+jS2paWDB+j%}G5tTk6wQes}Hpb6B zZQ#k?_7vLYcoymPc-1)Y<+!P`rLTr`)LRyMHNAupYMVBEeR!E}-oMH4ei!z!$=bb|Rj4J9ybPzdWOtOqESLj_}Iou(~v> zlRpaJo?e#yd8!8V6CWK?tpj(KsNd9%a{|}w9g;yUv~?%9RdLh+P_Z4tOvKzSB^{l1 zdRs+Q1RFli==H~Xn6Ka3ex@7no|6d=jShq>YV$I4!$zsFEoInAOIqkh$f!kG-@K{B zuT^)y7JSulS*EEmW4p3kOCnqNG21fanWPOkQRgv9f8FU(+>r^ka8Xt**PN-=@2*V1 zrR)NGLKp%succ4o;Hj&){7+zW@72E*RZy(3vj*7kGD$|ra@B~kE*Jqyo?u$MS&+_C zQW=$~UG31(kz*at*YhR3)Wo=lw$LRNlsSq{trtmN(K-Iir)|hM4lj6)Fs~gQqhZ*R zh!zX8bjxc|^XU((R&(lZTD&jFz$U3dHoW`jo^W!)V8Sk?f9HrKeo7(ZDapBS)k~Ux z_(U7Zy1mhMb9wo2qTpWmRYJ~`h!XiQ#C%vs<%h-#UbDiu`xOwq>{<8>@YY)XCZ>bi zGEeeU?O8Pa_>^DWcDXy=7TSr&damu^Fsoqs1CYm-dR4c|xzBk6t61ti;||n|qAI3t zCH8^L*yDW{!v{z!u!3*qujZG*{7@pGqm$hUZI7j*#=+9-t{hssqyLREjp6N@e=*y z6__8=1j(}~MM(|(uh%lWjC?B+Oea&Ot5H~vQPa3rdnebf6dC)@J5kl-x5;N26Kq!; zbL|hjmx+U)$pkjnHly8h)VPh3g-IH!$5&^HnaPVSCIdr4? zQE4TmyKT8EPI^C%HrlR!8D;|(PoIrVA0vQ+P=ywmIZGEFAq?sBY(Din+w;t=_%lop!4&)>%^k+<}p9TN;aI z=o~lJrtBV>p4Me-e8V6^Q5aEUX;<;I#|3#JkwyEZxL32b24EBshvZ6w)5(<>m0hLv zO3bC)cb0i}WQ1b&@|nZX0@J1GyC+~Bo_oH17yGWF^~oYl6bx1Tk@N`_?rU}Jn)Qf7 z9?JE?<2dVjmY%EesN3Z9VfD#w+9{ZJCkF*#4~@N|T0Pp{F-Z zZW_rZn*YJ6vjPw40KWbA~B^&|apeB&O?ji+(iBd|{5VfyZp$27mfqWR_i zvuc6F$kCxz1>uKl>-h@nhJ%(3VpS0 zulmVD;DFuoopl0p9P^5cdz>qSx#RS8vSdA!QlT=Zg;9EXwcKq0{-{;av~Nli-K zZ}Y#nf)7e#I`#^{7gFl!)=xDatVudTYu5UCY_sWn$7r^|<;vbC*T`0+tS}0b1s$tL z&iyOy;Qwr$1{B!Vf4~;yZ zTcwxrnRSmBJfL&H{Qw%dy#$UWU*bYkK(!wgy-aMk!vPb{7Va?t3bORr9q5*iGvin% z&6+9J&K>MK(*&^yj|l%9`9XrIV_V&P&22Xbkbe|DWl{{$%#%=VUN#$_xqfL!hH&;P4WEBqY~CCqoai;!L6Zq>Np=b=F|k&js-{5{iRHK~6c*-$^x% zM?%ZGRTc9|F5Y;g0xf}E-gPHP+#hx2#^^d4-ep-6Jf*tkuw2Z#OuZ0uJi|nkX-3$g z<@E9R(rG7-&xl=| z>k(i7;e1{wR_p36w9B2DD?68DuDDz)Z-Ia#PM$B0>m0|0 z`(m;O?N~L_OBTgdJH75mm$dnAV4x6#;31-kCMV^DgZZVuD$y{SiwR$-Tpe^%h1*zV zZPND-OS3H8)SpOLrWklSwj~&7mr*X}*QuuErrMRukEt2uig#{IQI_Pn7~~?`4bL)p z^Y#xgZ$R|sZ5J+TzB-S+d1gJeyH^_ai#k{2?jF)7mn`vd3AbZSt{o?p7!>f79iSQR zhS04x>8<7r&+?S#V3G1PJMNp6KkMH~C|dM%f0s&0$ih-!_(? zBaqef$FCOnV~@|uYaz3qPVCvw`Si!u^mAZETj(rjJH@B?$wJlBvwMmtkU*X){X0MF z-yrhGf8^i?K|-j06?RkTnMwP8*q0&?r*ZmLH>=GfHA5zm{q1VyjmA!5+b2g*%kDY> z-{`i! z_DiqU7*FI&R`W~cwUe!1sLmn7 zfONt`0m#sA?yxtH{-{=UJlOVco4rcK#SrsH{vq&dr|Tk3z4(tHzwxu`>eJ)zyV-(**1c!`V8nk;(i;)%Bw-<_ zM2Nijhd*(n?Wi+N(l`%f*2U*k6;wy^sA_q-hBoz7sX1i3hf0Kn#nd;uf8p29XBi8V z#;|X`!>x9I`hv>_{+_HUvjxntBtfTUlF7-#@Nesr%{hyIaTQFXgcqyGGH9t54FdX$ z5_&lS;bw=Yt*iJ_Mw5;?9f!Iy_MD^2Ck3Ur-v_)15Wm zbdXqoG~&W1O!}FxN^ZqB8V}A66*}752M>^sHi=OWUj_o0i6#OXQixDMU>! z%6F+jAhm1H@0^$LYD*T?_(^Yoil$%)aN)Y_Ghb_iw#Gv<0Kp2$q^cv@a#+2Uo{Q+e z$Ac%Vis%=yn|_6qr})`qq=qUgGZ2AXSU#K2r(NM-H?AmS8Vu6&vOlCMTJnzgQlsU| zXnBQmmjv3wsKJp7f4yGN;#?mLUevB?(<;egxPzft7!yajyJn*mdACk5sNj^Xu+szl ztA&3i8BMPu=8J)%Za*M>=I{z$xpxRZugBgc!cz*%Rx6Bk_PNG#ahu~1uGbK~uuwlR ze=McE>1-9p;3Su01N~Q@c$7_y;(vZa2<%3G(8Rr%5 zwQje_pY9p1IisCIdSi_1?LcFlYL*fkOXzzZVj&m6FMs*<5pP)$zmz$F)JP~Z9I_(VdCK;r*ok_MJZcFkH4mUkjjp?V9G(W0PGD&bE>&D^@V^y1OGmED$V`SC#`&QUDN zoCIb_3mH@%1m@jslHla*mX4&Q$s#o3c@Es{y3?|6`Y}q>pFb5-rtZ}TO_Cw!ZzGGfl0Bxtzb&qf z0r&hY!ba;O^6TDxDsHftfAReR>AiwT;Q{czt8Uv_^B^Q88MfP>o`L`@h9eU-nj7IC z>^F>J5zRUK-k*hhI(%ElBM~N=C#}+~6T>T`U*H!ciRVhH|EHi(;NTrO)}I`Sp8y9^ zIb}952kX$L$tx|p?$M`c@paPxh~VB$7h~i}(_8REHUG@^66dL?$!E;7xVUKQn7v}s zmOlM>**Tbo3~Dx>!JmwbGg|aL6@odA{~!^yvZ-$jg=iw@eK;D1YAPo;WTxJsC|?fO z-Ykvn=@xffOY5*8#_5q3TcbJ+EwUNsr)0XkGL$IfQMhinId%7+U@*XztrZTDpFkgSCgtHHxBfj{ne$UCblqdNX|Z~{y5#9Pb~xj; zps|TP4%O&A|KgV5!VYlv} zy+@+u!=?<7V@QRRbbn+Sgg1G;ld&uxhvC%SUet;yDdVf3BnuLYs2)(d4JHj^e}7lR zWfHX+Z1b`ELyU~~PqdBvU@?5%CsxZ8nL9(`M$ngVPie<~q>_l-%hrc_X|h(~GBDI~=EW zMRzPS&Sv)g{Q%H?0hzfN+F<7`M1E}jm&$x`jZYkS?+%Ut3yf|E8&n`MLo&XjsG^)q zeaTffX8@%QwEiO35;d3~v~x5ak8PkcKepPbXT_FrO_%((^2RVcBgSDO85g5utJn2g zw%EZenA-OD!@L%Y{9h13kGRK}a@9>D2o3{9yr<+|3#jbS5anEgxefD*8Trzy_19je z^v^aE@MhD6*&*v!$7^lV5>^7WE2D#}--Al0~m zU`a@+?}pYWp7y8Rv#hmAUd#bSLz-pzO=auiF7Te>wnbV>ma8##Yb|O{p09Je5t|NB zL}Y&xCbe`jtjdFW{s%mPKkyXNSXg691u2W-{M>#Ni-=#ao$E|W{%EBbjm1|EptZ@! z6*eAuy&^TT5bS$)j$vlq?ISUjR_HSj{WzZ+2L6!}R3(u#^yNzN)NPDJnH$Xzh{Uwo z6NXD`5W_?!U=YnP!=`5-HsCBal=!qN&+M2hZK>a<-PRvJj{e8H)U<%=u6T`tj-!{P zJM8Idx4JEb7hc=iy_#j0&E>Yai)In40F2bz_p}<+Ixit~-tDP@G5rbBvKsV^hdiNd z!f*c_jV^EqLc%=;0t55{P-M^7if9Q*P=eGAJ$^s(@<8M=3Xsv%-ms`C_Ei<6Nj*~Q zytFbMEDo(@d{Y`PCYUL)7o`tR!_{(X!}c2*`c zkT}W6#%LfmoMD^s7g zElec<%zo81^_0WA2oB+%q|q@0dd)cx@}{v*yNRK2s3r*WeB;wz%7k)=Y5rS`;QL}& z%40*o)doZir-cHl5)%)F+)v7W?g^mnj@&Rnt<*VG81BlZTn`kPv3ha`tfPA?rYXun znVx>%bpa-2jiP>^wDM&{VpWdOq3Fnb6cZcemedGno>JP;12d(Nv4NFz7bw#QA~iM> z8wKC3Gapq-k!NNiHtnkGHQp;+lDVVw7!h9MBpx2!aoCf)Q(k)`ae;pmxJ2l7!;I8KAIsB2#qcQ?j!9r~x!S9Mj-IiAnxM2wWL4x~`zxfM7r$6g(lTimJGW*zYZ?eoP`4@!IMd4m|iM6U^fttMPP8 z%1qj~zS<8X`un_Vqw$7G?z@cif}!^d51a49m1EG_3zf(D=Bzj%#k$gV2SFGq#YOkI z_UU{{1}ci|YDKILyW>ZA(jK|+1+|fCQT(csFXrUpA-G_D{K2C7e3MHa4--nBT2JE~(z6*nlV?rp&9g>jRi4%+g#IZJ3Mum&; zIz9A~h|8+ycsL$Rhq^<@?nbV`{?j_#C`E4I#UB5}gRi>bUv0R=tB3?~8Fr9nmVuXk zU2zT*PWc23(Dq3fslWoS(?!c+r$)Zx&l;F7npG>L##*BD?*&?tB^NLr)&^o3w>QSRszhH_Fm3)pKZZk(Ws{MNLlHQ#Mc z%A=E9*p>j7l?UTt=ywD^r3)pmu(c|HNhY~_n+#s>(`$zvV@e3@Mtm*-6DSk@R=SpR zUQ7I6$vcEGJ6Nyn85m@6li>%1(cZ1;E6J0 z)X!~(_~fC`d(iaH+=Vw_I4jgbF5uKN-~xr0+;dJ~cf|*GSD=d9E0XA58P=Ft02!~0 z24H`Az3>NI*)q#p;x8iVkstyeEP%|?-8HPG>4b)b8R*}6<0o`~LZM0VGPn_O%p;KqVPRIC z|M3E<#i@wf6Qrv&ioj5ba5qvfT)`cH29pI;_xSZD2Miu$fUaMi8!Qk2(q(1ieV={G zbnV!#i9mba+Y+TJ*cjO1Pw=kVj!4$az}~@FG?PP_J$HmMWLSBYBw$%<-fJOvu-nuZ z2l-@QZR^oN>>}TU#b$7*EQ{5FuOMN8)=#avIz+nnz0i;LkGqL|&=c@=+Z!~}dMI-E zOQ(qN%#bLq0Fp%vuF%GAiUKLsuz`g13)La*sb-M;^7yFr8e@Dg8pAsYVIAQX2gH@w z7I#(wC{`j#Qv5Qz&MFGhKRwLbrX*>~T%=|d&Rxtd%j@R_-&_R>&ZfTDmbTLiGmr-I zA(YW#>5sEEsc_6#0_nZD(cud0Gxcb$?o;{p?iRV947{cZBn|2P|E#kqqEYw4fw zlw`9P*nrX2-1vsN#%L_}SV_xSPmg7!B*Q>oRPsj8NSW@WeL4l^e>;;&*d$g{(y&lB$TFjp7iE*&omaPc z`Ef9^j{xu(e)-@$Frt>V6=0Mqh*9LRf`Hlt-}2*>@~<{$5?6NA}Qtyh`Gga>HofodRlniF2+>A$5AsfLH~qLp+r3Got)gW;G3sP^uuYHtEL z^QIr80D$rEquSXU%hYe^r=7`RC4k`Y55a2vP{!T0|E`>L{T&Jjz`%u|r7ax%>a!*j zG&e=MLJt@Wa}iNNOpc1I`EGW?bO;unR@`V_As4}dUdd`F_&I!n922y=6O}hp_Hj&5 z27!e2cK%I3!zEbEJ4k3HAT&M!{ke(^^}FOuxM6ijz+)3L_|?q#AtYZtb^5Rw4x|y0 z6_8C9DKFZ5F8YJi&k=NEQ-!=mo+SvN;W*Ovier>^K027=Gk}N;XSvDk)^YiBk>|xp zh;soc+(PHUT?v6QUtw+jqP_3WATGk-%9(i278X}Tj;Dh+0o(LmGB^W+SL;J`x80-b z{H>1xhm~2{#l%Ejl+Ha|AOPY#1xwTWZNecfVI@*YR}heLUQ$^vYZ-c7QaHYA1+eM7 z7+nOzComJlQl$(}JOE_HGD|yav79)2+(i8MMBp`WK7)dC+B?sQk1GzPlou!Yy0uia z;$#b7A7^lAc_rXX7i4{aXOU6>HvOgQ-WHI~NJX6uA-s=sRxV_(r>Kuww(q0{Xa>e- zZ|8de)e~Wg?n?7aCo(&P^j`*2A>5+SvffPpxN`4`CcQWwUy%y#%!@L73enP{_+HX48qY!hRs=W#)RY-ye=Y=I{aXrep&fLu+AM! zGLfglkLJ}-$hnYc_kv?&L2%%NXe6iYI#?Nw3HakcFU&GPUWtI%ZPo@KRaX67>lEFi zH2@aK{Y_rb!P1%?{Si*{z$6ht3jVqYekD%2N(BWbAYvY%ZZ)rS3an^(A^gVKW!C+# zFO|-oD?9sZP6{lECGqIe8f49VXkwjE3m^s=iyyd7Ka9f*VAKvi`W_b7or7tQ?D15U zSH=LDC2wLQU*5$S5qX_w#Tj2xAGim5V{jH=Wn&n()@pHEP#tou)d|u#AK_~KkKa!k z8(yzLxiaK3!+;1KBIw(3*+qkgdVhSM6nO-u6XFMMkZI@2s{IF5pMbKfyPh=xNpHir zb=MavLLvG>gucQ1{-I+RpBzW5${?P`EG`S?fbuW9HLV4sesr1t*@wQC(+EfgE9*Qd z?(zTEyb3U{w?>WW0Vdu=Dk>oIqvdS~Kc_6qaPRfR#6&zDKTe4L+wsDKMG&k?WPjON z22cFyr*CRig7oMQ^9t&~eZ(t81l_PO1~X)-xy-F88jmi zahj)Ot}??QV-Sur5#X5@DmgE!;M9P8NJjhE;#9p1GuMkQSk00{=4Zo4k)}!Ju;(gU z41N~{g8*C(A?0Lpast~X5w6;k@4I`gN#xxw%UFg`rv^`R7^Zj@wVO`HNRCjzDT?La z%XraLxp=WVs#{Uj{@Ie4GIV(s@*=HH~U%N)0 z-I~22+I{oKRgjcKqh-G{+J5%mVdyvxdw8%?N&q}*iAaE4BI4g8H1+n-9pmnE#;=Q<^PTI3 zV9x_^y#|?sQJ9AWpMZ^fHd8lnDV!wm#z09fS)gh80Ed0v2u}<;uli;3=Si$EI^?19frV3=772H z?hSnL;}vEVxR#)Q4ww+3ijQ*H|5z#8B(~S%d;3*JF>W11s1(qy@JPNWAZ89AU^6CGr6Nx`ZCniqv@fYog7f${4!)f_x^5D2lI2s{z-oQOe+ENE%Y9RQ z3NTnbOG!27v)psdE$NquXe4^`_Y-%q z3cHjiIc!uA&^%#Jy6U?!223n!JOdbT8#}bT0RU`D?3^#qh9iC>-fhK4X$xrvWWFA!K&2#I;lkA8#cR> zqnD1k;swMN&nWhRR~nN1ZqaMHZ>uXpmZ@T#`_9rKr z)_8%Tky1S8!9MeHudqnvx>7LZ7j`b_R(LR(3=;-B3?EKGmksvS6!gY70Cf<7mt%f! z4`0avwq`hqT#YoN-s&%QC*M~mBV~R7wuO-746f;?k&OgpmY0Z4GO45YOHBzWT@Hf0 z(h)4=pc5f$e0WejZAo|})%A@-l==8xqT!oMEF7<>K!HhzYO#+~C6OU+qpdd-Bv1%@ z7V93PowWD=kqYW?m|5KbxdiWx?p*zT8C7;?TuX_T={N)BSG!S zAo&NSe*cETPRl+Fgd?{U?6>yqcv-cRD$V~f@~?yF{zmdz)=LOdlLFQ~8tu$o)pWHj zWcG5$^FpPSk<@W8FFx!q>ylTfUwfA_k+L#KhiAPoq;$m7;4vg`10x?c60hMl8c;h2 zB+uDej9`R1Mu0Ka$c7>Yau2TFtG(v^v4ceKLP&l>`xtOJV4 z;Omy^0BDMBR5{iT@a2E4Lz2hwer4y^K96j$LC%@RkZ44xDL(4+pBky%QFp|tJ1MK8 z1B2PW=#+xH5W-AP>3cRM5A;BC2WieW7@$h9X{h7G03?eK!5y>N>2`y$Ech~sM-~1u zOQSzt3C?G^uu>7+xrHrbzv`*QJxu;=jH%!@4t{-5Mc>Ttxg^Mi@?d}K54>ECDw^q7 zOT$`0pev!LZ4*NVS9QZFkK57h! ziqyFJo&Gex00H)hO|6+M6i^`pSM-FiX-j=Y3kBso0}b6A(4XkJQTNVr!9{LV z6J!g3@m1vzgg6f`6MPLk94Yfj;?0yoHaVaz{G-=->cW_3B{lRFxKPp)ipIfDe( zi*hs2zA}t;y~WO}F+o!SDDyhzOqWzpu+h}W22|JqnwADQS5}iF=LC|dv#?&*sm+|x zJ>!?Bav4?(JlP(YKXRf=sx3qF)HqmQV4SoOZe=K|rR-4G?qwEWWI+wVAuVO)!*4ONn;deE}#N_a)@?c^qWmAa&D-xeQ(@3n~kC z@ZW+%GM-w64SX7s>{oNZ6@~E8k}d|2aSJr9#FMf@MMhxw6o}`}BX9*Y4D4@P$1}>t zWe|BVf)4=j-9UOgfYRjA&?A>@4Y`E|=ahmytM(s6plvH*s+StRze z01yVD4{vUT4fuTuP`?8X(~r_tw5&*^O{WH_uX>B|oiN6X?iR zrwYiG*}W1A+d01VS!mx>w&q6#V%9XGlExKHuvJ`{5`wdB0IH&bd8OdKGi0!OcwqlG1`7)eGrb{aMzK@sMM;Q zGN4kQ??BM)(k;xdf^Q!!pHCdgFb#JWf!K?KkRn_3#aMkFDkz>*q8asFt(~kegC3r)T&#EauJDjrNb_0NT3KZxipJj{%bQGJ_K+MZY3qA-etY7% z<)SQ|W99e@m1ta&=Td$?9aSO7`g%K+I>q;G`(Agd%$ssAhG_$1s=>9zCXsJnEtlv9q8>URVYXtgZQI=dQ4hb}uYE zFg0?PwHLm<3z}-j5jCPT- zCSY4Hb@j9TdB>=1x}V?VdAG+x@(YN?#_xbf$;e@d$tOODaPJ8wTNF1gQ?NA;%l+wy z@~iS%xG^0nF#c}WL*z(z7+dD0hj3_5arXN(d3JcCkvSS6Tu%FybAMhyU|7b}Dc#3V z|DL9BYGCj4deqiZ)8MD;wf?y-W;btdR0eBgfta}78;H5h^HcTsyY6bq#e<&1i_t}TaIA@TXC;sohUCF1)Fbw)tNI~ z>UMRcRqE~-e9P!Pe)~JOv~97j^F^m-=dq6121SZ536{Go9qEJj)4i=zc7we$%)8Cl z6halZ4QJjM{%Vv~Rw8*M`}K&C)W|;`_gf5*ea28)?`eHqEds}QEG|cnNU4zZ(B(+& z^7l1b5w`S)o-;M;1GTZSsa;(YqX#vS(#^F2vRvk-(>3PT%#OZrO&u+!JT*>VN-|2s zj#jkQK2`hjJkZ2J?e6Fmwby%O;@?^}n49~2bZ5S#HPcFKLwUkiZg0HCUla_&|l_G>(li8XR&)_ zyD_*i^4Bx)a5nexo5{g2quUnz4mSZV2c`T*+$PXFtrL%#r z$KEMs6&>#{LgCS+^2F$1_3Q=dSJ*^6;iXvaHPPfj9cd@#na~`GOq+OhrO{qlX$O5{ zr z_|k33wrR^Od)m}OPMSlkyyUM?p}BlEb;G)A$ycOKo7RBTH&J)f+Z)vxj!l1d^HW@R zuI;8VHLKW+ln?M{f|sP+B=DXvg1R3bQ#^zX%Waly%>8B6RL6NV`U~NKRf^R0n=mMd z-O<3d;H`u|d1%zj4_=9m%;8u08?{zQ=yDGa`QtmNA5_r)m4^!{=rx@n? zkiEvW*@d}Y!QGLP!Mxe5@Z-pOZ%@=(F-GbEFAwj)rz5l6z=;~Y2G3!QcWcznj$7lD z&2?%~pGGE=kqN1HVx@+R_SSQU8V+K*FN}XJPo9{fT#Qe6InlFG=zsR!gW%+;+`F#F z@#l^rNG!BG*dsvNWKXrpt*V+#b~nn>RaG>pts{qXoBe!FrS{x&-}kNG=$!*d8aN%_ zH>AgDcu)O#vQvLINj1q+nnEVeNsw~X9RIDeU=gVgmCs0RhT5!%_Dp%NZop1a@^b7; zm`Jy+$`@9yFp0%ZyQ-~@E(QbTHza#W+5DN~C0_?!%)>lC&AixS9-6YeRuZyGUv3n< zBKp0Ao;rM`6s5DGzuQ33{kW27XXqE?+a}@4?h&?Cx+hnBa_4`Iw$MS2)M((5V{aLT0BW{MYm8P#{+M%P} zM~!v+oDZO4C6E!WT!j~?t>V5xE(2UTUOuP(VdoGx_2LWnJzlZo0eAQG)B#~VR8kC^ zwlj}-Euzl38T#cKpYI z3xum1!`dJ(7OOJpDa<|}g-cHmZiVs#f!YlNPi{fAadPTSpKB@71#xG$wFW$Q1&7E= z&J>s{i(a)e3RwS!T58SSx%8K0%6*M(Y6DqQeLH+g#A#&zvS8nYS1GCcy~O+l-VWa} z{r2moww<4BOYMC^Ntu>)Ul`i|=~NXI53nEp>+_}H`ZULfNWmA&vocM|&!3{c6%3a8 zzh0P_O~fyg$;xVsTywfxHvB8f=gbQ&%MTJ#FI7`l9*P?6*%}3NdE6*t^lwGweXdBB z0XrAp5wfKL*@UI5-6l{?4br;{`D}@L?Uv{oIJ*ngCgwI0GYdij#g)B65ipL-2=SJNqVm|yL# zGu#e%x^nbknDq6PiLyl65iV(pD$kYfCQpyr@xWU$wu?KNWCLHzn%j+now_}ekQQd% zJqP0)I{6vCZc0xY{Ml8y5?s#iAAQv6s|#qZS14)u!6zyiM1&6;TO!_@QaNmD(fqjJ z{rt2p2hJvkiYV3mN#VH}v=0o12G1ws84t*93eXH*xL&Qr9I#?V{Z2ta^>REFMJp8@@n!FksX5GWw?@XTczMdgraO{yKBV z!t%iv9zTrUdG5$tvCWs*wG7gg?}a$qELF-~(4XyRiuh#kLmcTnMV2!2wS%(i!}|!- zO6VJ(wcobMq<@vL--5gCDUY0rd4~+5%Jn|iS*A>mNO&${F3~KNJkP-3eX~fxEAFpuTdjHsrA0@F=THs)#nMVtA+Tppa&zwS~60 zH#1X+IH(~=-M8rPHZ~`nf^DZaP;MvPR<5zqB~Qa&F;7+Vx@ke&B~Im4VHK6XOVaup zDzo0iD$;+rt(NoOZ?E_bCUR2;RGAg_OdBaG^In|z1Rkfbl6&pXO>6K>1dH5D>z3Jy zC<$Th_RQfHaaK0}?M?~`wqec=TUvuAuUmps4gq%e7290?&g8Q+{=)U80p{vV&@rc{ z7eLGEr~oze^x>4fYQ&?RGX~rTvUTm)^A}d)S!BMwe56^FaZoH^Fh9fD;ha+tu4P<% zzRE)FK~3{Pfr*ubR0?~?Ttwy#v6a--bVq@uORn=Thb63NmU3CnVa2cCKd82Ba5E|X z=dezPR`%Yl#~1#|FIXBkXmE;R5Xs3ews37RdAU!!&oxXiG1c9(HYKOja;>D?FGa=W zutmgWCu{APWWiA$upMmNnS&1UfU^W*Vob6-GusU-RwYJn@1#bqvOgv%mw#^hXs0#z zmuKf!m*-J4O`5DB68cct3>P7}i9zP2?}~s*)V+%MM-sDqBZ*7HYQ`1A>gT3L`NauW z$5}_x$5Z=QE619uLGc_ACng%?Ys5T)!4PTAk^B5;(%w5XD5>@>?1x*WuSeEG8wt z4P zv0RUNX>H5sLi2}#`Ipp572ZTh>D-XLg?ts~OK?#6zy+x^&^~M%J5=%jLdZ9gJlc6j zdbpHqw0B42LE{U}+wkf_ER-pL)`F=-o~#}Z=yT()dkkr-vo#L7Y?b(T;o#_trXORs zrv8)LXs%zdqV1RX#oL@~Y5GnK;$ODFb_pYF`xg@R=L9g_^Y}?11;O8?1ClT@yS3S zi4N$W&IehtoCT9&F)$3X#fVE;uZXL2Zwrmf;ENnyB2`Uw9bCqG_k(9&CFR2*e(teL zmb0i%haVJVC(5rg0LquyPsimYr4%n;754?ojTIM8o0RtiUU4y^W1yOVp>}(Ee-L>O zvF>{q>gUjL{ihNMmox#FKamOPg^*B4Ob{^8;$!rTPWH84c|e`13g?i{xdflq%hBl> zS)lputM>H#@_VXep?(AEll80hfTv!AQBO;i#)f|ra)G4f zz5pULD(*uHp+O<@sLGcR@0$-}T@BS|QSS)Pi;|z9FbA9hQ;+v%nS)$Dh6a9scyrq+ z*z%EUmG@T1yphGQM87}f^F5;EPfI#uwQ-RbCp3_zd>mA5@y9=21!te2-}9*6FNQkW zlN=TIos%v1eZm$}m&7zlK1~j8B{?~P-Lf`a`WNk|Tk9|A-PdwK1sI2kSxaEh^)(dE zI6>O8?PB@U1Ru?9Q@XwR=oBc#e~TO12xdAJzSkP(Rs$JTO*RK9u2%s0YZ~Y?6;P&v)zmuj)_PHOlAeUL<&i}Ad9r-X^ zN0yEd1g(Y>?pR|5O(|I_9#CxrwPPb#{_zJ5j|AtR-CJV%oBM3IP4=**?wm@@%%n53-$jeI%8rG8zAI94}sG`m%s8a)3O zUc=ks{#x~X$Kb^{IGv2BW<6sZI~DQJ@gWKz%V!9j;Q=fp5aKZ`Fma8a$r_Q5{@$(J z-PupzwD>6zYEV(Q%IQv&!uNiZBlIYQLtTg`<1|`GKuulujR7xkIZG!&C$D3dVkzgI zm&&td)AdHAnMv_-%4H{YnGh#RmcyR|HneJt;}Zu-;80zELJGsoXE8m76MV5C%ppE5 zk#m6REVI&>pPlsl!p60giH9{#vA;LUr%haF;1T?hl5q!6v&@S>I$)=rLvhu4=8Y%? zOXbi|^+}_dpp^skL$rDgp~G%02zpFGS@@ke&Jv0EPh4uZTwiTYmlZX+7Jj?WS4OHW z?|h|3N%gUJDOuxRwWvudSBkvCU2)StT&%INZHrOj6z-?&2Ttn%i$y+`!9mFd=Ya)l zM&os*uh;ER4-%f=C^0g;6Ifh5HMuSn^{Kl$oy2{~I@P{NNbXw#laUb-^V8TQM4^ql z?*x^I=X)+8{n##lcc=2z*mReGs}u?MT)TB|`Q=F4aTjZbaJaIyP3zv^Seh%?WpzG5 zAf^Kl__J4XHIV0=0Q&fU@<9Z@rFj)M4Nq%A|NZvgF$xz2PCqbk5b2*GuKgDarx$?( z51=zLoOyE80T-%{KUfrjjo1iuYfgv$M-GH3z+%jHAp`^{wEg!ZG#Ydo;BO61j?4V( yN@Z}|N!{kKi1B|L4_(OyS@8eg&i~6gf0>;W8~4@?QY!JlKMfTfN$83)wW_GT>bN24;ea`;9 z^Ju0ul1kN8Z%e8wsUsESz9Yfo!GnQ;AxTM!DS?4ON`irbL&HLUmVAHi_yY!ph-)b- zsvspQO03{yZ)Ry@3I-+_nW_$>p*)6_r>z7F$AJ2UrjS$ED|H*{%c%hw`4^E$5>%D* z(V`%0Y_#eV_=q6uFD8m;iuCkB-S+h5)F7k2u<>m2fZEsb$LYtZTtV|`?%RB4b2~FI zg=TX&$jowdFwHj|Lz4m&RsoVkDRc<**)N#8h=>~J1cB~iV$=aF>wk5(bzve(dW~oz z?`N+6(vB0@A>)IQgYTKhA@d^ak%8@I*#t6SgNbl1;!lo!mHeX}p&FV%3?|kHSvFpu z21zwh-?B)_GmmW~2sWyMC6fUk5JWD(8lMZlPYp}ldgSck6X7m$-X~}5NQ@=QM?z=K zF&L#1A)DMAo&3_4F=ouHS-r?iKOs(QBB&QfoXmdpmwx1LTJ?{)6M~m|#f1>z#H1X< ztx8t2a7m_vxaL2}1N|gwflmbSWG(5t8+Y93dwlH zHDO;Xec>YZda+^G=I#kv4t>ryZgirlee#7#3=f$}gxivMj}Tu2Wbdfnp(nCk#@?QQX_x#5gBm!bN}Fh4H*JVsV}QdJ@o&)sTQkdl!=WAGcbecd*)KwKhE;!a zAlm$P6TayPT?E3XiN>s8W_uw-_my*QvYalpi7uXr#MXnIC>Ow zEVnHCF6aMc=Cuw9RCwtTW^}i!H4%N9#+t;qQCe`y-2M|iX$pP2riPKxy37#=CfRe< zI5UDDcGnrp#OSkN+6KO>gqT{f<3bMs7RUc3;NvoTdY64u&-x43_7oP}tqG6L4e>93 zB=MiDY`cHMzc7VzuYrHxh3*Ov%s}iHW|IVCHC$Q{!ZP89p$C%@Mx*{>-AAc_>=v+9 zfJXopE<|SWrR)^)9jwe)ldE4%pQ%)F5K=kg!=aBr$Ae5qebZLELMhw?qYU zbSa^v1eK8ZhyI#kSpm-v_{2(+o@XDY#ig`BrtwEX= z1lJ(0!K@agYUHZH>a(KG#Jn8uI~d9J&3rG-!58{BGZ+5MF!t}NKTchE_P;i+>7F2b z!2U`Xpf$r{L8^-|k>n*vXNXdhrl3Ed$DvRE>RyoX_)dlvTP5`6ksJ=$>^JQ^>$X_ZNJdR4w^52*%yDY-F? zG4)7bvt)(HX~sMfP}sDiG1lp)Q`!yfq3`%{YJNq6N{s58Di>`iZKtYS6v^e_ zwQ^^XGWqmcP~pVFR=Ky*Be!zw>C~i28uLabgqN0=uor2!u9vQt=nLfw^9$6={mUaF zHS{zz4KzN|IwCZpD^eK_BU3edmo2&ZflZ28^IG}9Nq0k}W6rhHzQn#c-@w`$g!M~$5Z#fD59WrGEq+x6wm zG+S*$@1;01Y=gGd+Of;j?oj>}zs`4An2rI=@Iz!l@Qf zhFR@7pE}1T08C5B5v}BQ=Do5F@tgXNH>o@>B31ZW=2-$Q-}&_QxUW>b6kg))9&vx; zs^Si0I%eK$9#of98~c3qgYNZhojz}G@`l6;A`Rr)VE0yj2w)QX$q6%-nYfTr1s~6o zOR794Uj*Yx==s%?=xA`7n@`=7(ckWv@79y{q^3G-gzYIA>ZX z!%hRZexLSS%e>uTTB?3D_Yk&pwT!fkK%G%t$DgLD8B;-&Iyud)mSM-KhnB&Xx0aO^ z&)O=zx-J3#_hKYv4mKMTJNoS>w}ooiW0?yXcbifhEL*Jf&@^^i=FLX8iQ}8*8|$wE zU+=YBT5C67{P4{;4lndJKyDUS)N9w4RQAVHx`CZ|w6SzD?ilXJ7k-UYZt^35>E6Zj zrA_U|N13m^(mLNXxAgW^l$+$Oce1pa)l@dx{9isUA^c#n&gemIORQ%y$U(tH!887{ zpJTN!LDV)p7iHxeGf(3^^}B^5#5_}-VF7cE;%3V1qO;9SL#tWaQE{*4yV_FGijt$w z#ZwkW3PvbZnEX*bfz8+EhkR-N`*K^gjogLnvbt7z+bbRnr=!iafTl9uE?&7jXTcSx z?fbU|glTL%0FR!{iOUJ!OXtAV_fCRNJVtI^t24J#yUWZ)=e@?`LuK{1+MI4YpZmR* zdTag_#e%Cf%AB;hT^9uh+ddn zlw!hd&q2StJ;&+&neI?|3wi1MGl3dUv)5`MprG#cx%s#o00{_tiT+Uea0baNq<{ao zd8u+H_A7Wy{j>B3q-xK$tsO(0>qWYy-2HO51uR7YQ+c%QZt^T$1`CINl5PMcyWZ3_bql(^r6VkkoVr z1H+>D=lexUiTu-Z_>yO-qT!+;`-8{W-j>nO#NNo1(Zkl^vo#nPp9jxp*4EU;kl4f4 z#?G0?gP-(YEqFfj{}cmAiT~Ba#hRZ~Lso%U)ZWRIn4OW0k%?3Qo|u@J&&kA$M@dZL zzsNuT@snD(xH#|t0PgPYjP9(A_D<#iW^Qh7022#1%tDvor|FdgPk+kzdQMV z`w=sBHg>XfaIv(vBmSpfLnC`v7k*OGe;EDu=im2f>S6gmoa~(cORP@;0sqthm>HP> z|K0Z|Dc?V(JPMW`rZyU4mbRvL&YwI4n3=da`2I!kA65Uu@_&(P{tqcTGuQv7{9iTy zMac*FM}q$)(ZAL8uhLI_3BdCK{#*9~@KN>n!JlvtSc=K3d|tu-!R8Y=h|eGDe_#K} zN4|d3sI~wD69SVG6ISu~a^8*LgSqtl_iuTC(HEq&&L}MHuCO{GgdN)Tf|j#3^r&SS zB(*{b;0L)?u|!Y7uvg@=#hVwLmMrbCM&a^o8Z~T1q%W$94ZI9fnytiw|p3{o(fDkB1A+Y}=>HOHGh9zgb^kw_@ zf7A;75(NW?g9e8U0Q-*=0D==Dc6>(#149M-@}CKo90!6J4E#S+EfrYc;JxTSD)~P+ z5+@iS{vXW1V1MR;L87mqeEC%Ee=Ig!9y668FKXAC=|CH>r z9S&S)~^~r0m97eKQ+qcAJi9qc`t*=zlct zn^X(#7HeH8VME)O;b`enQy{zI!Vi9pe}oK#MPu@> z8v@n>U8BvzGW-#`+1+uro=OEZ&7@ejIM#fQ&sN_BWO3c0QlI5y3!@%JEWvvyeZ}hM zyCFFMxiSrHuQ2vL5^&w_D+duOMaDB`UbkyyCuvk~&l9**B_?x42ar4%Gf^yfHo^Y_ z*aafc4o&jFZLrK_K8e>~CV7OAim0Ch76(>{n0faXG;Dy73S0&hddttrBxo#7kp^w+ zLf{)j|3yCvEN;$-E|%xH-XnEvr%7a?YNjcDX^uITG9r~B1Z0sIu@<=0^Z57EYL9&l zl*N#kmQ|DuOGJ5KZzc&XF+L>Bi&fi|2n*L>_eHk215nbDr4?jpXoI76uGO4;| z%H=i_Rq}iot5%SgC2@@iDR594)k-AX&}5 z%9ayfE{~HWppK>z2HZDUNDL}zHAF@0&pyVYLe_eb#FJHJ8AE<;f%?rG^x%u(Ju695 zNZJ;3qL@jLtKb({^6JQx#_T!F;%r5TPTbHN@78>a$Ljkbo^X-U-ZlUx);mb2slKoc zz*v*8&onv98SImF+khcyA&)ji=!y0mBfB?WZnovi#vuu3ClCVybaWFr29^L*j*zoO z8kJ>jMBo{EDDtMi`GbF}eo0Duzh1e^5xk3B9_5PTZDq`I99gf}+wm_}S4*95Zhu@@ zI?lz^{WoE%Ma%o+QOL3n{hS*zquYaEk(!Z(Ha0G|llI zu0w@Dc^!F-?K@97II`(Yb${Qny*!t&^3S!#;y}EJmIaQ>M$>qx zKspP^^$;PM8V;m^)e35}p>d;H2AXUYvz{hV1X)Td5w-~OMpy5nUKMo4^8|}=Q`BVm zi)CXy6U}9{`AYix*tUePW#Bqn_Ng8x%D-?m$8%u4C2wn%MN*NjGA9Fy*LpLA%SJxK zJ1Dm=XqC@K?4}2`$q%vtaI ztWYir+S)LR-n=c&JrFP`!2Rl8NAEB@N#H|SYX<)I+;9V{RwT5?tNEYVLJpMg!_8_a z{e{y;3v+W4-|`Imi$nZfalLX{Qj;4@%Cx@`V1?ix=@v0V^Nu%J?rOH3h@%dfD}uZ^ z!>{R_A7dLvmo%;2w6(LnGH==abn1Q%lWp`|g0TM*N8RA*J2TXr>1t|2-*#*EKHU2n z`rd?Y4*Or68SD<7`VM+(ni-19fovpDoCOrWN6f89F&10cbHl)bgXrweq4l)PLOZ&uv_>N#ls@r3mt)f5DPaJ3*b-mMITGw)+dn3svt{kyr#xEf zs7u|u^bRtU<%)AluPwpO^Nq{%P=2}}6(vhcn#WR}|F$yw1l9mM@KqA8N}5K{9;*9x zyO+97D9V3eL5^zb@3$?t0RkRpF@uJ|RmLLy&9)H6V>ef}v;|%OpNyr99y6@3)xuu# zJT=8Bau!y(At5x!U!F>8?=j~={s9O}rVBa^kvg0|%$+HJ=Z0|_xLEy=8QN{bVhzyS znaz~7ZQZd!^iIpQ+2lQTVajvbfCW~|$7I2fL^E57zbA1ZWeZ2_4XT3!-HTGc>$GM5 z$8e4w&R&^1^Y_d=R^2Nf-SWpH&)!11GFezBqEyQkMegHQ=ws`i_&+TD=Bd*2zylCU`us!{JKFv@FHvEBZsp&X zZD}HaZ-m;*UF;a!<8-FWOGM$~wu&ePQI|-S@A#PMU9Y^Z^nefhVe8ckC;weP?M@!< z3Z>GfXW1+>4Co{|6##2#UQg|uN;%%lxlmi_b;fsuqtD}cm?12tZ`$>vLw0=f`L9g6 zJf=*VvcU!tBwp_e41c2Tf#unO^;IFLtbb`3={=6a4dM&MIZ$&fiYm0~)1Ly%|1wJ8ILKls5y-WPAMDR znU)?yyn}%P_d4w51|rn7eQ(-fKH_x9mAh_ouSVLhvOzBFi zWlH-tbx@<~qj42Gy`;JZ(c|l@1AEFL4IJ{V>_l77$_tBgGwG*+NL!JKE1lyLJ5oyX z;LgxO%uS?p-b0ivQ}P-)bWi`NFY#N=)K(&B;8h`W`6i5of_=J3@SydYVyKQB#{&eq~_gDi?`>vpcC?)uIRY?SCJNkaPMSToQQbTt@aFCWD5xdxAFEup5F z!wo~=kqj|4+*0Vgt}#HD-_KRLV=^)92boFwmfC(AFzb~m=LaSfn(q_zO33h;1l!uB z7moz`g^Pq($X;sMDeR})%|6pF>m0vB2Bg>E|2CwWy7n`>wn)*8-w^>S(Ph%)*ljOW z)y`by^eWCT*m48D)shD|{vNmcUR*2}&=2T)hA42wy^!{cx|T^uy20!;Pa1zy8Ne?6 z4K=s-MczMiysF+0wxKrJ-`@MsN!jxp1|-;LR8y$oH4Eed&hAaIMaoSX2I z0RRWyWH9n=Hky*WWUlgYv-jruk9ZWS=zEReF*8{$N5_dmU0Q9@E3gPQYC9ftKLxpn zc-OmCP07m|I`vf!fEqflQqq~M?+YEgcu}%~A&v=ZAm@S2je1j{JmlEUw#g{4reoBd zzPn)D;m1z7Za#>&tXvC~8+nDcU05t8m>0pvk~O;ec4Y!h5P$s5b$UyIj<8Yp%Ensh z%nFpE^m~)9m#NR?^!rl3rO>DYMy8sl?V($Uo^Wvy4EyVA;fFLf-^dTX;SRTR2)mI>tDaHP;~SjYMrRu*&=H_291ZP%ux z+WlE{4$i9esxz8z=!!%_`F!H(9_vZe^)^eSt!X=&BZ{t(&L{8Y)g##1ZPfGjS&DXH-5As z#Zf#*#l^}Ob{^{v+5v*gFRSEFfEzWnv6z(>{yCHy9?mZ3e)**_og#Nu*UjXN%&}N+ zGns5Av&5C_2?LMly|_JX6)EFQMGVN^YHV~X8D<^UP7wSaiNA|{BKfQWXi#wTjl6uI;{kq4lo)#yNydxz^phhrgK0msp zPja0d?<`YzbMANN&mR)u9Z~Gu-1F&4TQwzDbHSCOJEAEr!<~*@e(z&*Lj*?QzjQCH zwe)&#DYIQBy$&II@CWJw)43f|(~_P!YE~%~G(jvpfB=~|KznhjD8Z&v1Lw~}ZkOZY zUZC=jM%8z%(~Wg#dAaXIe|_;R(IQ&>_BZaR>|G``3BnIV_>sp7@#5eT3x`5799j82 zm)4Fl&A1-M^tm1)M`X;wN6^}*qzDovyz;lw*dOttc{Z9mkM@Bng|G0kT;ap#t0FDi z&LcXWR9o*&$}Key66;SNymxYmGj)=qj^JDMe$K^zG z0_Hm2FuDS%`JH!L7wpY0iea2b6F6DS7ap`PlRDcOmd+L*b)^eT(G`9Vs+bE=>f856 zh34n)2fJ;NoHIqNMm`i?$PtK?Gg+cL8-Ex*sr;Eun3Bzd+BexS5Meg9y5d;UYB+L0 z8yQT&mp>nzke99LmHD@y?j^jA58dfOJch$aF8iv-$zp8hjq8uT!qM|iEmmu>y!ya~ zPdj-xL}&({95}O3PqP=pK@c9I?^lXzq;y{Tohr7NV%Qu_`mg{p+I$QJz;KS;6;S(A z-^-#El{V+s+V!%n%W&-8fLQ?G3^}e#U>3(SS2yhBdSYl~;-p2~4>oEQApt|dCr+m) zjXth1s_Ep&av!PPh0U&%sy2?|x8|brCapqUayktAb)IYd{HRPC&bZVleTh1Qk#loO zUCC3^UaV1=?5;A%?b_HtLI4Q(nS)sS^3B^~C<%13B9CK=&U-zium*--2t^*Vjf0>d zzEC)OX2a>nWhX98Iij8^+OYq%a!Ka{8mIA0HpYv1RL07!T%M~b z(-jHh?TMYWD=)bS>#m<`<<5p4f$vLN;?t;a$?F~!AZoXudgN;V+subf?GL(jdCnX* zNVoDSxznB|wJcT9Z>X4jIS3e{7%H2Z_{!N_U>&-TXWO35nq_Cj5WW;yuR^PXdi9q z_|lmtrlt(-ja;wrhXVl$cosGwR0TsTP_n45=A9JZevaJnI={dV>ih83e&Yc4f@sEE zD)osij~?FUHV79id%iVsm7j-h7c{z<5WVjQvdxp~d&uLmhLtZgD)Dm z`WfwojTAC~NEZ5@n~l10q|~eCMDZuv4+URXS^oXq(`8s3KZcDh$(| z+_Al8BS!0LoNvsYhhu5}V69RYF7x4IHA=~l#Z-Mi&Be6A$l!PTAq{DkF?|Y0h>|(G zzRa{{AeVCytbYESjlTS2^klleM-az~6drevu#J^rfDeAk4;s5vRr-_{k)~G>A@`gt zJ_~B!9_hcr!4)=ey zmGXH-s2Lfp9&BZoq=oG|0Nr@KVlEaIRk~NaX}T)5y2S%aew;az_fa@~gFM2~sBPrB zYxAg!4Fl=1C-4W6ZArOxHWihsXJ=k zD$PL4S3G^*WY!gGRoQK|dhgMPdq4Gpg996&)}t@l#)YHkxZ1c&I-Z=m-hsQe5~xGM z#h2%&^4MKFBL!XNGf+C2b7z2|MOwI3uvVrKGhf^+Ay2zx(F;`dVBUj@LD^(b7N3g; zkceSV)>o@J$rEL8-AGLpA;|jCP&f3%p>w=hgC!nJ^l;$t}bJ(6ZlpeIr=w`;lbU^I|4 zxq4p}Q$|?n*&O8*ioe4a?oNoTO?n5JDmG8;Bjq*<;i;$uXvYaPybtrlXUxP=1!EX( zt_F0nElo;EDJm)Xqpy^dghpSEAJ4y!5TZG&WKGi+y~i2^X|96#44gZoP&mT2*r0)6 zXDWFEU+-Rt?)^Fqss=JU9toxPkr9jCyxgs9jcHk2fS&ylpQ8YLZWpde5(42$;Be$o zjqDRRZ_JFcakxg83#*GQZmM?|`q@U9lDV7yK9NXt!XdG4O z4|ca{<2m2`=DJ+lrD7KS5KpuCOuwD5%Z=5+5rgx9R2DSDq0o#?*Yp+~_mSC8DnIsU zdO~h_5FlKWI?#{;OKR2u9puMpYs2eI%i0?(5fE!2q&^FNa~!c~8`ClxzF}e0ZeoFy zWl!-`(q0E81qxw5}bs;(g{@iD5(|6$?f@C}>{W;#9eESLX)0XT^ zZB;+&vM$PKVuSTTwygUQakyfhF;JDoK9i2Q-Egv#EWyrd$r9%;Dfp-+yd@9!L4M5F zu1u7+5H)tXoOkIAxBM^~7oD+kRGziRPUwFpS9aKrcCAb92^I z;Kx~R0>xDASKUDJ?Y?)_OF^ols2qtNB3@&hBTeM1F{?`wU4IglGN<;r#@R(bDdK3E zu_Ut%mS_djBx>rvumxhz9|mX2Fpp}^Sv591#(sp#Ly3sbnpBY6XBF&eU!I;jj(11r zG|r^epY$SPS!Xp;-DdwZUU?^~>6hM40nQS!C6VcX?S6)o9=@@*sQSy%m8K-3ipXkk zUo2N_I4K|OT2!Bd$IpV4a{sX8^~~E(6`DKz1PWJdbf*8sdov279yYQ6bG3p|kq-@u z)~UOXw9qxQ7ba^RqT+K%>%*ZoGSJ0J^hp_fr$0$idlkp784pi|w%gZ3=G!R9j;Mz` z%m+p=aQ_HOE=%m^-d>C7rF89aq@+*}y{Y$OQ9&!~IZ-FLu&SpfDnri^8e8e+Fv@|dkFhVGn6(Q- z-F?sQ9bRyyU%f>1Puw6qAx{w#q2XE|=_$$_`jU-F4N`{0QcX*@(zi(>N?N~t62w7Z5?Sdx)b z2vSC!X-SugXD>o4S3#fr@p7{$B`uZ4)D$S)C*6A(@}1t04rT{|{rH<@ zV2N^$lSZ>0?C_E|pN4kqC41(0RuKDm7W;5-Y7kW9C5K6Q`pP|pyJ?_OhiRG8ipi}L zBRqL)t+?$tbUtxPjYo{K7$`~zQ7kd=cEuVkCeTP5u%9xO_c1-G3cs9A%UcD)tP4+S zpc?F8NuNxWNW;@EMo2OXz>v@!PD<@S^81Z~MUGBj6C{KK>7_z!S(oBF5(}uPxw#83 z^i$9{LzW$XFq5H@40!^?*JafBVU~BHO<_wvS zSz^1uy%*OzBG9+HP{02-h+eiSDVbXD`@EM;PEtln<-x&M+OPM0`d&YDWLGLudbb?2 zGer7c)%^+&^+%s6R+}?=^cTIZ-D9p)!k-<6OF2d|uNZj+`{HLW)E&?Fh? z7aI{{&40Aui`2&?p&Mg-&c9*>-=WYKMB`opX!u0!r%n;+M)D-Onz}j)Me%x`M3Chn-q(v) zQS#xyt@|`Z`gU~QFV*>E(cgXE2c!3r{PaQu#jD`x+AyewT405x#piY%a{p4Wd;8Y7 zs_n@%zlkuGTF|J^`vTVV)Df?L2HzX(1$gjfZb_-vk#&nJa1=an$qzzoIfqkQAzi1J@;= zEe4OI!Rx|o@TnqL%36IgJpk3Ml&ESF?ou!?3J4?YjepTuGN_e;^D5wf$3FEVPPj`0 zg?0{l_FBGwPOH}?pAnFXc+#@`!e+qwN>4IR_yFf38@s7>YV)8+@vbG6!61-UjRg9K z&c!^;7LhsXMlRF*G~A(gvF=#Y&*Ks=GfiuDs2{E9(@QL}wyi%$Lf5gadbUy}7$&?T zr};G*Cg4~>JWxAy$2B8%iVS+yMQ5xx?eLqK?)3+R-nF-55 zH~baxs)}73B=ZbN^rqLu-*2$C5r9c3)uWY*0S4FchntH$!C=<_g%4p8#_&tGJ#PA* zlDc}ha@y%p(ymd2HE*>lcotu*FYWke2Lo}fL#UsE_2CnR0j;~D)0Sf?_6$UpZf*1I8X zHmcpGgvvp5X_@NeQ1U-{58-j+RDUp09HU*dj-s&r=7Z#xB5RY`LH-1?hNi!FapY#8 zGFM0`Ip4^`Q4wZ@fe=S;Bf7Lh3Y z!N5C+DIEs#i}^|}x)|ZjKSx@+2iTN1wns8wZ&4W}5x)o~JEv;pKZo>=%N{-p{2r+E znaK<@00!ZQ3F3dZ?$gT}awB)%RbkGHDh!Zwv@&$#HH=QQX{8>UZbJ{`@jN2x{TeBs zfi^_OOHyPR9Utr8p*L4auG!G^vZj3$-uMZar;g%UkgwqDPP$gH2?T@XBA#^ymm1Jgj)}me*-fW0 z(5GhPz*_j327Aeiyow{2NE8r(o(k^=ro|`=k)vv+E7`n3Dmcr9#@jDt96)LllC2)f zW*x92raQ5@7F_SiLBLJ~%KM|XerL4s$RJt7KOAz2+;LXD^R^bk>vu=+52(-ovpV9- z;nDeBOtDMsM<6Y zM(_4+Twf~G@h?O{`q1Ni^C*rYxtC}l6OeiFOWd?aUtOy7t#Xv0q;bpC1Keh`H6<-7 z!{#IBIrq269kQLZRKh55jvyJXWFUHW*cHZcRF&emP?mDQb^h#Z8oTN!>IfK(HsnaT z^D(U}NAi%vf{3J~dzoa^5+L9t-?<7))KxK^>~XG30{jTHegtRGax=kt(tn7}gxZ0p zMRrh7%vXiccCV&yaX_%DxXDQ#Gm?xBhnk@+)(-kpmg-S2jw$Iv_f3)bw+qyUsdhrJ zNWij*I41YtPv)^rs_nHfUof8R*4MIw!>$zs)(1#a;$<0BJ24WvwQ;=iF)y#(v-^)z zx8wzN+7_%z<<#SxAHZt0XnhPjO#v`^+vhUlhYreT6eFZhe-;s(pE4n%*Ce)gwA|M6 zc-LIw@#`^V2Ib>7EVfpw>EDJ1O39Lb!*9P565Dj(At!nRRu2gOHHv*jiJ7y@Cj{2x z2t#C9u`)-JDztwzVch!$lCK+24l?~h{{Bu`f@1y#KjztDy;8POr)%s!%W4s4AqA@>&3ZBhC=>x9g@WNn{W-HONzZO>IOgo9eDX7ZmtfkxNyz#SA!aA%>MSDI6S81biydfPt znqCjxiv2N-lQ!3uoM~*Jb)%9Q>~vp$(k2xzC`HVq4jHgohEh93+E3Z>xO|M(s(#pyJI~xgFc$nBIb6B1drn*K6FDomBhfom8Xm;g}w5IkmZWa&O zfHbC7l;=k(APfeXgU%(*pXmP$*4VP}d~M()jn7}{BdDa4a^%Ta6`z*%2sK^t2k0`(Y_q~%yqy6!GgC@~@SfWT{?G9|lWv!ZnJF1_<@1X| zV8djDyPY0S`t8kQO0l064RCFsG@%#TCMQo-V#4m>(SG6x$VUI*=HK9$x!85dfp@ke zx~L}Y3?q*=ECrt0%vd}&5=kWmV#s$~TL^93uPAxu&$1a^Ez*tqDNRpMl4xbV%ElaF z4t*tsxQMApXdEUDwdSB>ZZA-JjRD=nsGBdmPDX@W;oDuHU*za-v5_MiY;1pB+|a@C z{+-{NA)jA-pmgVIhpz0mwI_%EMBpXd$Kad>!mW2r;uY1v&}(G7o!d@)X#+Xy@9O?` zfeyOZc3>CPKaVUQ25YBxk?A49`DRlbWo(z&YZRyN%7~JmES#>u@)O&f+VskRX8*kb zHDwh0eZ zQ%H}3636*$vkFb3JAT3d;IUGTVV$S(bgqoWONHnU7`LyzvVbmatM#iL=CGsf-hgS| zQ;oljSL;1fe+!yT#n+dc+wTsRj_2k|n{qCmTAu(ZAD37&V@+5BBG_^GHi>^weeVr9 zOuaoda(36)e>Xm}UCl=xkhqp4e!QPyG)s$Gq=!srx>CJA^eeaQU$Eaj6d}TkiO*Q9 zw|t&CQ~nOh&YK~d`r3RRUzf0qH$Y-&483)GqROWA3ooUw5btGT50PO9&iN#9qcmBr z!f_+~GgMp^`c|VhQ^-s7%#d42wWs{K4zsKye0T0_<4wQ7M4p@Y4SMqRz|y1Daja(F37j_VpCt51-MG|7QMGl z9Jqil%_4hEeeT!I+(!2+FUx1FNc;(y;4eH@0c%r)KGizf>rwIX&i*CK=#ckn@NAG# z<{6tRN|t#DJ7EFO-%(jJi$Rd!UCH95C8-P^@nmw-3Qea0TRUNNKQkD2s-HgyhVtnX&Pu^v^#U{~Y6AW&dSZZd)22$w!yM7e+pj+_x zIwrRroHp`0l1E`eR?As63!Jo{xX>{VN$8Rl*N(N8K&q$G#uIN~Z>+DsTW>vY`$(v> zuZub!UDVm5OxLX2o(4-|2UXQ!sMovZGV|`V*TT6=Pfv`@?I1ZbRh>c-qV2|y z4oB8wxJ7KRSCwW?f6RB%+lYr&i$g-t5enDc8$hAF z?Yq-8>lE54b#X3jeOqN|=l5$~4vlB?lQNzsOkL&kP0u@U!R?5x&^RNMsr+D(K^r;*TORU9VLc7EoskWcTycwhRSaBB@u4q(eQ%AGjY+Z4CJ2^|+M zlgUBm(Oolw60XKx{+#3p&?3sCWzE2d(q3vpr7JO;<@|U5$QPR{9)}s73d{JONUFeF zS5LL$k2_70N-#D2D$)Sy9)+8CBVisu%_i$(ZWzJe4Wn2|aZCL5)6dSLOJR%dfdv5< zvn$?EkA5d*nBEeP0S47XGVRyJ^ks81m9!^~MEGRFfO<<>#q^xr0TsrTkMQJtOYts9 zkQs#oE_NuofKo5Wa#r^?KEHnaXx%P>_W{Nyt%wWON5jVl8I?o` z*pkIdfu7M%cB*HgMO#V9U36CwN!)(W~ZbD%bit~8b0Cy z$TrxZ15LU)-tEn^18bC`{Xrv`1vXatD-%U--Xe}#fq`P**YXnVB^5Hc5dVjPX zk-rei-MO5ZTTN>L8@Ig&D%UFM<(mX%7#*y*a_t`JNIFxv#u>eAD^!%aP#j2$J&>_9 z8e2pv%F7kTrI%?nE0$vx*?xDYSWTr7mA|=0sI%NY{Vprjt2hQkzKo+&u#UZuuuO;; zIN#h9e4ORjGjEkzB_^dM*I{B~(}jj^J~We0IF>9ey{y=`>&oGTCR6V2GQZypuah?>1GfoX6<{yRyGTFTB$8$^K@hwj zV*Gpyb$Z2zU;j3*R~pC!SfDTc!%tPC@sc_h-NiNaLYSD5R-B@`Oox=`W1Z62e<&Rl zx{9B!hEs40{_QMEsQ>w<`N|RN(eR#d|KE0${8gyqJJgwLm2r)B6MZiLTr(<*Uc1Yf zL;#J4fl62Bwhj zhr=`dYg$cj);;UX8Wey6neYtPyLD1|Zi1LtpUts}-c@u*UB7~)TjbVUgWIZP*1!;J zqcyL;9_f_aTFQ#8= zze?EU5=D^+<~|gw$iSgtfbBA~Ws7}J6m#zDz73nMt9hiw(u=VfswC-l)gIf_>GL6$ zodOyF9XBYz8ul(iC@CYW*ro>C|JH4IgU2uOUB*FL&H;pJP7!UMX|7ku^$exTx8udn zW2;D1U+p*7VuV>nK8QcHmD}~E-8OtqTKEw~FzO`flOa3VoKHG?hdKmMbpr@aX{T%R zm20--rVPgXppa^`iIQPmA?pg4F(z^et@?l1d+WA1zHNUH8VK(01SfcKZ=kW@!9755 zm*5&9xF@(<5`qPH5}e@fE{(g}RP#Oe{LY>s-EE5UmA1)B{7D~XsQmmcD?BJ;LBuK?b0wB-?)Ra zLQBaC>j$)J1Q4TH@kV|vd`)4FeOo5b&%4G?5NGW)x5zGaN8E3Sk6PG+fCvE@;md=r z3~r5s%+0^l)p;?nFevM_)Ih#tQ*>+oOxy6WQx1!ddwX|s@nz$>nn_#Xl|iW{WF$)q z%PTnaM+`lZwR zm91H}FAs~$UPub{dMb7XVIwkQA%w|_(Y_5C9zOeRVQDro^3&j z&^A+x4^H~)h6QL`2*3YuZHTB!_S@7&642vk`;dh%Ki(~t=sc?qxNkMKI) zp`h_L+D#R+sXnKWv)lFVYs6jIqR6OmA3mTo*iKux4TB$9Y5#09d?`E3A|d*r3yV)h zl_X%`o&`aLVR}+tq$W_g@v^p9Yo!4vL+}FGeexr&QL4v`Nkb=DlAe~H@)AGgIM&G( ziGQCBZvcck`NMFo(1Q_smHDYoRazRK^)gs^~S2wOIu zu$NDa6dvwZYRdr4_qqIx)pD_8w{taXmwVw6HQI*XqFNM5u1fblQbR)HG_~(X_~G@A z|J#mfeCYDx2lur4qpHq594?PLs?)6;3q*q>9xTop`*CTVqtN~>_uDH5&1@_DESZ7B1ttIcY6B;g zx-594cxN6NVH}`7taJ#d5A*xKRm*V#MLf^3kn~XG`-=0etfH{FlO8-9`ai8X4*Pm4 z9{|lTB7FGZy(w02_9hlS^#Mtt|5J_!E~AADrvG>V{id&=p%PK_(j?XEg`-zYVds@c zorg>S_b2e`Y|gMbX7~AwIaHnNKOTicIYS33@j&i*JBlV_!>0cm*z`%6RN-zb>BfYDX<|cp z%NHpTo&7zKEfRr}pZ_QXJa`T)7;N&F^M3Wajh!8|CB?kcsMI(~?{{a{M0<__8E1@8 zg_>a&E#}XE>csv{tRU=3IEG!5Z}`^UdcsC-#>AWFm}-_LVpZPT_TkN9Lpt|@SfdSC zlKTFl<#^tpI&r!o0-^W+$*-U^phOaN_|_pxt75@t0>ZoV!p-NH;}y z;2rpTAQpubFBEa*5Rz+d9{Mb1wKZ;0)mS3)@fk(gmh}V1B%>SJ-anldfQBN$PUKi) zr-8+Vd<;<`W!&uwix zgk2;owZ<-x{R;%y!zOUaUwXWz){|D`fOs zkMptyemnpTt!OY1*bM{p+H z8wSL0+LTcSVPyPvfl(%S`%7I?@`MIn?iYqedFm(X-R1JGWFx3-UpvwjdGAE`IXBq` z%w*Wc!oPS??EbUHQre@71|Ofz45#<{QPYy@B?<@47X%Ffj0WN%RaGO6y<2K0jf;@H z&9Uw*aT4&+w*spGpXbdT&oXyjy8I@uI$1=w4yp-zq``3kSV$X9K>81ccSnbxV7FXi z%oQWQa>~1y>M)ZJ#Fvu#NU; zo3uZMG-o~dUA8ec+UPMq%mux9D>AnT9Zh-b>SY_S3kd~8g%S+m|A)&)^fZmZezj@e zHl-g76g3Tc9AADhVuS0&L=4FsltPVQShGA?DvmWg{|M6$hdbmHXQbgX*TU#^8QKcrt&%N+fEz|$=Px3G%tpJ+GVmO zUwlNq*vn0QR>P>31mA9b_mP`mSo>FA)Wu$DQHZt*&l@gGa`E)84vdk}H3<|iV6XLC z?Vs*2P)bB$EL$`Ab24R;nV||uxjS_*zK}<6uf$YGd<9!7#+~uym#FxEI>O|tfHV3$ zCv!O)_w?y>G~ZS0T~F8NsKT?=&l>jA_UsztzMY%%9Q_h;Qk`2U4kmx}VLkS9$}Gsc zaPzTM$7{Zb(=j|gU`l<3eRu8Bz~}hhDW=9XNZfmktvr+Sejn*fsx<8WI6=wmUb|&2WW!v1bvK3Od=~0Nua(G@s z8`IP6J|Is^`=Zsd)V$Y2+g8|l#6%BVkxerbmZ*)h>((`td7Jan0yUdzJ}ou==Cbew z5Aj8fI!VzE?pqzKy>>cM#GGC!RE-XdQKm-bQ(LUi3v!~kDZ0;o@8#x*-4}$WV&$k( zgtJ_;T0Ssl_0=#t_@PB0 zDmE-*fy+RnPeAdL;YSa{>;t1}_pJ;hLejGNW00`_5%v~dh6}>Tv3b?2F!SsrP5g;} zw45fjB|A}A_{+C!66bz(&AZX{@>9pVJDF4;>4w+`GyRI~cfw0Wy6(dgLf>|!RMn=` z&$gnnUZ+zfb|i%(#jxrf9VN%j%NN%cj3Q3Fe;Ysb{^L-i*8>9YV|a@Dh29#=rr_F7 zp%(k{)&G`zfFy&ro_l1Ox=lFf=_}zD@ccodX*5toD*{iNngsArbJANM6NDrfs2PrJ|Fr0aNHy7$BToHr<(<#+3JDX1zJ%qs^LWMObO z9EGwl8H;`{&EiQ5c&N15D@3S(yj|OTheGdo;9vFBsH#BTsbov-UB6-;g@Cge#y{%(Z)lFyjcC`Bge7B|E(H5vdV32&bW0PXf0~yGm z9YC$B@L;M#tD1dUPNcJ5oD{kfL6;@rx_65x`yenfQ;V-$7Y$7|zYXvm2EoD|v>nmM zDpp%!nA5}}cwIr6rrxSk_U8UN7dy&Y(v`cp;>MJ0VWiK4Y4v5$GYl$u1aBRY&-$c% zE1Kp?anT4sK9ligeJlpL^mxPMU!{zWSiHd%hxA3uSW>1Rf7g)?fF}-O(HF4b1r|hv zpa&h=hPL$4&)%TP1(#tn3FNzw2d~NEWqj!|>!pM&kr!7RQ)oD@1^@E|HV!mu>@J)H zgih~pc95~9_KPXL*i-n8y2P<%)oui6Ru^b>5kszOl_d}tZ8sy6<-nX*RwFRne=RVA z_#5G@Ez{vFNzU|NK>v*4d+mZeha9C$)k%e$ zO}~OsB>@Io?2%^6A)|)juT4gtovx(sT<0&>s+y{cw~L4ua|X<$b(~`-iLG@<@KPTd zDOBCIn(ny8{8LD#K7PB%>UCd{Vpm0>kE0;;7vMyp_pd!vbAzoilnVa1;5-dGlwYg> z$tcP=tY^jnv1^b%)t!2TrFB@JBU-4o0_^*wOlc^hS34^D%@y3a1xEaQAylpB$VP)a z$zUl_$|KQCEM2!hE8o4H{30I?4`z4+m`5^Cu(vC&KDB&*U*=^`*z9}{!IC%;G7>s} zHoN(K0phc~Q3MT%7|ef;AZ)F({le!e2EZ92U(5*artujGTqjhAGm$N2zNYw$!uiQbT9r9RVq4RhZ=2Em;Q@4)oQ#?;glHk zgQ0hIss(FiLH1p-xBJ63ZY9Mwr|3xZgCx+Z>Jche1%kOCDW>wY_H_RTICXy)s7)LQ zu_2f_@}9qM;a)hyV*PrO&gw=)E7DCaMbaxxev++47y7vT(akO)$yPZ-&~@ z1Bg$2!sr_tYPd=`UC)b?*BDdA!GnBP&KkhusqdhM<1a zfD0_oiQ{*)%b{#E_+C-ao)FkS49{!2_a;@?h53H9o7*U}PayY;tR)Q&5`eIC;RyAf zoKzWYb|YgIAI=w1rL&2@6jPGEN84KG5DPF3NpRkD{oS5OXrZW*`@C}p6KWTFH;jW% zmlW&}g5FS&6!z~M9C#xVb*sYb9huxHY<7Kn%%}bAN6CiE3$kprH7# zofz=&XTYloB7Pc!tt49&XE;#7X+ipI<{t9cyJ^enpS$yo9_6E4P~Ni#sAcZ9YQ@~Z zrKvI=6(s*3BoEB~24Ddf#?$kyxXgi3AIcfqGYVVJS!eN+gLXW4*rTBROGx6_a{s0m z+!g|~J|yRw#(e7O7ZT*iH`V;k)sb@99Ro(Py+Tplw^L zPuLG8UAX_i)WI$C;94@9SrtuZd_d1k>}3STg)&VN4{3$HK_lFYtEn}34y#^-zG(J+ zTfAe33}l`^JnoLfb15HJQ-XAZ(5y&f+uq5qgLBif^pW{mUksM9fdjVO0w1ObGIKr+ zNsLNWT_Y*ORla!i!)m)V$I@;Hq#O}R(#=>|^rtJrz2C#k#ScWZ!@GejgBdGU!kih9&%wdoE9$I9&5)5N%%(IQ7&06 z6ZL7<8-#2>KXTEjWeb11ZWf7_&-C_wfi9RZG_H6ac;J@_m97cpVpD*eW=(udirG3z z_8N00AXfrcGp2OCpPoUVPW_0`VD=x1K@N!3zU_^`ljRD78YX&zZF6HbaVLImzth^| zBMk3-esk`0H!)M2;_a{O{)ayIckju^Zn|b0-EprB znJBD4q8dBt%23C;nZUZ1MChDPjZ%FOG(TtdL4{+D(+cGp^}U=H{|ItzIiDhuI-5Zo zjzK&dwIzXOq0R}nqw1U$#K~E#Vj5rY`Xy1nG1CpzWmW+DOjZ;f%q2cu9P|Ke_>>XN z2%LVMnSx9nGdkn0lXDn#i3c4S$h^}%w2vM322a8zWRw^qn3{$v%imPk6X0g4n32si zyagHL8Ln2#ez*LapcTInCLqu*XGl4M-TWuqe!)eOVMNF{M^ zu_%s=#>lOwD25odnA=5CpxZ^7@RpyWw!TTgXT{@id+^n#oDH9DSff>)dMFQt0>=A!=CqE^{&8;IM%8_D1WT@Ue27uf@W zslz?ITy&<>fQv7Bol+3|R<5Px>K8L@+GHkBZ8E9Ru=GtcG0a9gO=1*ec5T&7pLEeL z&}E6~oi(8~RD`Q((P-*C4y~a|@GmukDWrIhgWaFH4%B)m^a!to?#=eE^ocY*5WhzV zF!`Y%hVU#YJ_1EEddy>Gd@Eeq|MoKTK>Ne6+ZzgY0DVCf5o_GoqG)SE+s>Nf_N$9i zg-TJ-nZ?oZJQ`DW3FY_ZwaoOsr4DkA?a=DGTKh`f2HF5}cfTa}h`D~DswkmbhHQXw z@6Uz&QOmQEBpymAeb%sjATl88HZYg;QJa780$&ZGZt%@zG4&#J=`-KI+%g>e6dqvF zv!!zFz`A_+f(P3nyN4^pTg1Na_-@~B$X1eY+kMr3xA4V+86Cd?N#QyV@=38@`LurH zC zE_``-4i?<(I2_BSPFMI))Svx4X)q_)T*ZZ&qH0ST=A^YQKqtm-ul5;547Sw(&9%upnszM&7Xe!PVo8a~hXJW!4rnXYnn zN|?OCXdfhx0;Cp*QL6$ClrcHQl#nM|it5Rq*&?cb5nqp=;r097&g*>E8$8&-jRUO& zR(v*7D%}b2{Du(Th~hgtt-c#yE4Hs6>x~w^Zxi<~!C&{@(W*d)S#~k#cPmvo^9wnrHWCkC<9f&Pjv@cMct_%4q-ct0x?~l>L zA^j7s#ENc7zQ*^v%WC^ig@(54UZT^C&s$IgBeAnmVlYBzbQRA1=TFJ1A3aFjy0mFP z-4%0VLrImlgviYkWxe37HIgS6YYJK-+|XE{t4(k{0?U^O?p!_R-N{k9S&TfAxv8Nn z-o}n8p%;FjiE2Kg@;SP3+ut3oh%i?24zD>7kuNf74LxYKe}7*u2m%Vz;DYlb;NqTw z3axDR-Oygc@841}RdQ^KZ`T=|Uq+zl44$k__wsc6c{K*kRd&&KoZCxsMSco-qu2uq zOI)$J7Bv{ySj=GSx+*;TGMFF`IMUCvU0#4HtN+*IuLSJ4njl#Yq=Y3|9u*WBppCy9*@d4I^z8Mr0Z_dh_QjGwQsSKEL3 z!!4~DY{r1BueD$RV*jAmCb(jsDRqVFkx(Hx!sK?SzO7A6kcvtekUW2uwr{j0P zZMa)SKbFNoOIgTA#yn$M)JsYeUA3OAOm|0-|G4QVp$Jz!@l zu8{V?Zx$ak&wrk^I(HF9++-!PWl-MX*;DIE*4S;xFFl9B7~A1&7->=&TNuvMK(d;K zmpu3NZ#YVz7m-+~9bY4ENy9=TKD8-+sL*F(z7G1c%}L+a6}vCP?p&7?L(CjNM!y|)X# zf$_JY*ZXNh!@?=rmN@s!$T0{8$7%$po+G5PG{qd%b*I^S;in+dee~&FlQhfJlUc0%SE6oMi2W1xzegvxReiYZ>tSwKBK@@~I6{ zLsdU*C$^doXVRvnpsUU!UkKutR;TSRibNLz_@H& zK>1!iiv*H$k+_RQs-*sfQ(!V?)Ptq)oqR1tC@*fN z7~x>781Z|L%+2B@I^K^S8n*p&NS2FXd|4*GhmX$M75v_3x@t^r&Y?`N8Y1s7c7>1N z3LmTq*6KRuo0^FtP8C#iDs2t;hzgaCGx7t=za$Y2;ahLSlt6O0_q-pV^N+}J^h)pL zfkyDdJcuu>G88j>?ebnli||^8jd_j{6+| zgK(jU0D73Y;!@wHi|fJlc1I4*vA=g2?bTOUszBrMZcF$Dp%l%C4jpRcW| zh1$mMR9>o_vKF?kR%o65ImcJF@Z9rCV>GVmsa#4*+Gg8>gQo*LvMkj!Y_A^NgMY;v z2336MBn46(;73|#4ug;P1Yd>ki#0~baG|6<%?y0iAGl$eDnrCsG;d(Ok&<-p>71ez zPpw2w{93HhqG^62J(daxn6-F<5o>=8dmJ@IBM^w5wi5%0K8+DkgDM`?*Ir|6KK8Fg zH%?I-hDU1lF@?8Y4ZQT+8ACdo5-Qs1z0cAv6?(`6n(ZqBJ5#obH%~`2?r}jcq6sQ? zrLVIZlX2r=n?4_q)kCy(7b}i}kH1{bdzxiOP&1!=G1Z5TB@tPjwC`??>(uG4)^wlm zMv?GzW3OyX*?$2dhkRvnefnBKw1V?TC|xw_aaL;(&_zGU0Oby9nJKo-N2Cz#p%?+n z{|1Z8X4k5m+7Zb^bkfw7^wOeajYMQTE3Q{%Qr(psijX-1tO=U~5`>;9%+=J+^Z_Ry zx#+C^KmV#NPywgz`N-LM^1vto!1kNs+FCqkLU;PApw0-W;}wlM&&!5cYrWf#(Fj>%?-Cr32F={K zOQz3+GdKs#PM-~#<*A07>x8VKtwE+>nY+|dS!uvw(L$z7RWs^-+_NZ{x#;;Tb6OJ3sk3Pk!=m&)rR&qtZ9+ zo?4aWlb^9TLD77KoNxz3Ju#~Huj3z1p)D2GYFn?J}iJhnck#YR94?@4ad=sBX!Fi|iT5KM8zWJ8`D`2PvOI6emuW z;@usN@Wz0u^)fU;x^E~2oC_Rjc2v%K6=0cQ;HjEYHbPVMTv}{`OIW$$j32xhjQA~s z&Q14_;KP84QBnAxpb0&wLGYI;_Xu$y1`CS{YA$g3yfp!vikgMwhD^WcaKhR9!tTNNq(237WnCKv@HGGP%E>(sw9QKu~D` zQZ!?qBvrah0lS#Oy*k_q9bEJM5K!h!3CBzFWIWT4gRf_ke#0wG+-eA-N6;~``$eiW zUDPvbc9b_!2N_D(tz!0XK)+teXE*E$0{jzRLHiav<2;{;l0vMo=RckivoeKY8@VRa7WuSul$G}pUD#3xY5u>T(-LG3iRUYam)c2mg zjzPr$Bx`NFwoQf0FPfJp>FxPm{%hOzyqjWsL^jtM2PGKD*5bTb(S$jMBiv~Xsk4|Y zm$UL7M4{7-2tvSK9^~G@-A5}X0LYWsZn+D-u%@boGfx0gP% z@A|`*iX+C*0Vx$G- z=F;lgrv9BD&HeP#P^wC)XJd!qx1FAi2hdQm{mx=iA_>x*>T%vM{;tv1qNa|B@E%Q( zfv4Hh)aXVgV)a#cU+6cs$E{mROOmgqM3y0kTv=ksr|DZwF}bHHTcSf7pf?7b z%l)3`+elN4@OVeEAa+N%kiBQ`|1^#G-Y9|S!LSQ66Amf%>t?k;?li(;Ahwp@!4?Kg27AP|NQ2)g$FmV0?4({Niu=xb2$zRmulj!wVb8uv08h!OP5Op~mgO+VWwAa4Jan=8 z$D@Zu{YxX|+uQ&tct!K+&;o)Igl~`D7Zf@-O*6jvTr0KylMki7zUWxFUo~EY#yoMr zo8n3LzW|9q1=q<9F!9<@jLG1AxUT?a*J|A-lIfMqSJKz-|2_6SFm_!Qw+1V-|^4Bd@Xs!w~YH>h&=0(Wyb;_MXzY^Zzu4eL0iR85YOkJT+y}J-?&}HfjZ|1 z!V0w8<#wW5_&T(~J~V&wQT50SJ!O9#Z2?H_30bokD=`a9$kC!jor zDs9drSFbu|(rY{2zhj;T(8fo?IX;RE=Ql@H>@mV0(gTtc8HzFnR$Ld`cFk@VCopt9 z+8j)I9-7)nCAlx$o0jq#dZCPr)wC{!Z3A#1TN1~591qGW6kSUC(~)WS@({Pxn;D}s zgsk?`HA{$O?tX>r_9_;}<{hQwDF;`XEBNK`3fruOi^Sbvmofy(kZG}k*|ybo-Q#&t ziYDFA*j=iQ^e`8cZ~Q%R$eq*8W{ldD{W5=}d%bK%;Sfb$HkX=5xRx)cXx`C!2xIwC zB|LlgtK7P6Wld+eMY*n%XLo5cpHpVX;1+k*TX0i_67joB*QO-Q=26lV0h_mu3DO_E z%+XCWYEom`x+D9XbN*-$(&foOB5^#Rj4U2WoMr)(9QOj8#rz1?q)t5d#cyDAP=6t{ zBk@p)$hn`PvAZb+k~;D>6K?qES^ADb1m=_4OhI}P!Tm)RsU_cV?Y=Uk=5MirFI)A= z)o$I|;pt_V%(7m-%6ji_gKwJU_h#THJS$!mJ0!Vm@Z}&Jonh zl~GTVM*HFw^9SS=b4KYcrbicMQB?bFc;=O2dzhNM0tXPypMd%tz10IauJV>$;X@o0 z|2#AycpO7)ow zzWzw16Qn8!YHiwzWEp%8Sf(W?M+g3%9^?LpAm6XOVtfiFr{7QgJCw2>b1`LVQ^Xz(VBPl)%@+vfs7W`U*8` zw_AU6N4z7D4?j6|J{u<`P~40!EGd&sJAwqCYCvXWneGO z?=ZG(XRohS=ug2(f5>Gx(CbJ<;~*3;SRzp255De9m5$D`m$syOmmEfFbP&;7v_Go} zkzFSj2y-`Z3|X0=(8 zJn}tj+3a{215-lK5T4qrYsWh68k4DFJ}uNft+Y4^5pB@4UNF4`xuTUs)TcCpiJaWd z=y>Kv0d2kJUkO~CoAV9)CFZ7=C6s2gpZ**+P?KlyC-Q~cdI4n|ePMO6%;Y+C8$Nf~Rr$QFy)BtG z)2=C*Q)?NaVROLT29#@3NbU-B|u=ola0}PbRnPxk9}nA&+t? zX;kT&)(iA8$D6O9u(Y;OwkJ?R;CF|mGT=3Dj>S(YOjh#x0n6wOj`Ou>`8~(-nPg1K z&?i99q7WLTMX$3YRZD}VLNwAWiU$G(8|()AV~cwt(|qGs_P+r46C1>X*b;Zrh8sx*PIL-`6Szwa*}$M>RtM0Vy$Q+(#7E~Ub4N8ueO}b{5jE7vms6| zwSlT&YlkOymPced)-P#$7UAvp?(&7$_oIocXEzs&XK19KxBCsbo`x|(ETVVk4*~xC_*K3&DK%$v!klQ9|u=0axY`|xF_#r z+5Bz=>*X8U^kY1w0)hKc3BSHq`Sgn+T%;KfeVR%E(!I}E+4%`SYcowbD;JT3+)=Q# zaKaZSBGGo!?tf^_tu{nO!^YMw(!U*Osck~Ci#BQz?%Sv_jKmF=MMVswXrVCa zr&crmDn!j1Z%^JQw<0uEyMsVI#k z30uJs0L=UuLGNBzjmDGAg~TTZ6xLhdk}&{*AsNxwiIwmoy1~jRM+X6Web#ACJs8r( zq%c9A$HtAeEyOd@YgT=Sz>1T=tj_j|2NnIq;cH?)<&P%cBq9+9R_&OB(g3HM5@yBH z&lv2jXn9#dVm1lmqR%bkq@H#C)%wcd`lTS3vU@MHIqJ{npBBvoWiqR}BBhhbdudZd z#~aJP(zvB_E&0EAb}8wG2{3kkiNNprym@>wYHUKe^%7Sk3mVc({lX4Q&ga6<{q<<2 zE+mv$>{VqXmqK6#Q&(#aGla-(Tz&RF3KZrs6p{&8PF-?ar&CKu1?mSw`w2<6*AKND z_&md+-tS$^ewVcsk}Stt(dkp1rM5p|f1E|-(s6r4eRmC{2+v0+9;(~%``+ZS&&@G& zxsD~hbmG9ifd+mTQJX*hj4r9yvr#Ao{3yuD(H^=H$k$JDPqBlgZh89`= z6WHvz8V!}rjAAzDP`&<&H7TyB z7fe)G59OdiOnSw!GNRhGc5gBsGdX_%cJGL~+Eb;LD!McKqg{Kt38EiIHtW%U zE+iI-ORG^s)lqkF@>uj@fQ=xz6Xk>9W2kmn;P_V>Ub~FY=Ur^MUOI^JX{@O96({!9 zH~p?crxd69Uz-aL**}Krcc*lbx29gIUsud;ax+?#oJ>pgS4`g`%+dgHu&AEtkG@-!yKfdWVtsEEN(H(NTcnC4}!qU78sWk(~cfx3?80g4Xu% zF)^gl=&k7>@zpGXMPsz>YJDEva(Z*dQ zRi8J;#WK$5dyl7%%wYyIPq>8xWSpKq@tWq?8ZnH}w4Lph?zTXt+yYYk%IQ+4w4{?6 zRAWO={){D_$s#wEsndP4#_#*$;akKo$mCnaD&_ZN4)`&cHqu;TrcJ4Ep8ERyvL^S0 zc)4=LW!)T0L7`f7Q6nP95wXp0)e4$e7?-NAzJS7rR6mKsj6JdK@X?EEYcXJ=fZxdB z=k4@$^sjWk7!+wOCd3b`my&Vhd7ywsYZ1{Ro{&nw5 zEoO|`zu+=%v5PM5AHf3h6Vgn}ofZKRu8UH&@I%E+ZyOfXuj?R@vDUcf&5e3h<)L2X zWSwgC>WmA0c}g!_y)=mlUzAxEF9|k8gTgk%`&c`fJ&GCAsy7tR1Gef3s236a=ik2b z<*xAAyEQ~*io4^$d!CCu*gpDEq+HGW?MT-vz2)yj7QyTdyw~i2u~MOD09#jQ!r;HH z5219}7jZ$6W;!YEX&K7~K6E<;T1VJPc$o#OhgNvvkEaHX1~DOkE8C;NVXH>FEk&B` zF8+YM=^yctyDCnyvGHBU{eATH4OKPG~e6fL4p|oo2ov{(5S)stIRgrSSp&ip$A0PAV zyBWSishNg)Tw%jEH5+}IMeNE@b>Q2ceJ@{|qhUEv=tv7K@0|AA85pLph(CxQ?A&X5 zE3EeEIP|ZTT)oz4tu%y-Koe)2TH9J1j$heXyx>s&)AOk>gI1#$CqqfK>H!e*q-y8` zAZ9_CHcim!6;Cg7|6K(NWss5o*qDw9f1ZU{&^?1THZFx4~jUvkK|^;i&^(tg$Ygn|5(R@f!S#s)q!T)H@6A1~wu8<5RJ1`J?Xe<;4Y-6&rXy@70Og zt}>^Eb*%!azQ)ZMnG90IcFm2lbS3?J3u|x0h~pIFSExnb3qC5F{|KmdycHxm+l#W; zun1JvarhY{pkFh2h(X+$YavduaefzRk0HPi{l$%vZtF+BrPi!7ORs3FzJjHBmUdtf zICml;#{`hD3O<)i428cayv$O-Mped5CJDbafxZ|Ic7SC3#qF;}?CA5c9!T%3*Z=2oFM6N_g3sXUD8zpQ=%DL7?YrSl~~vVK3DRpYS)&*sMUf-*$Qb z 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

3lbsyf~ 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 - Do you use Rust? - - Should we consider your answers to be invalid? ---------------------------------------------- @@ -342,7 +336,7 @@ over a year ago now. Unfortunately while we are still in this pre-1.0 period, releases will likely introduce breaking changes as we refine certain aspects of Nim such as its -standard library so the number of users experiencing breaking changes may +standard library, so the number of users experiencing breaking changes may increase. If so, how much work did it take to fix it? @@ -410,8 +404,9 @@ _________________________________________________ What aspects of Nim do you find most displeasing? -It was only natural to ask this question. This is almost a perfect opposite of -the previous answers, with almost 50% of respondents selecting "Debugging Tools" +It was only natural to ask this question. The results are almost perfectly +opposite to the previous question's answers, with almost 50% of respondents +selecting "Debugging Tools" as the most displeasing aspect of Nim. With "Documentation" and "Testing Tools" in second and third place respectively. There is also a much larger number of "Other" answers to this question. @@ -447,7 +442,8 @@ Previous Nim users ~~~~~~~~~~~~~~~~~~ For users that have used Nim before but decided against using it, we asked just -one specific question. +one specific question. The proportion of our respondents that answered it +was 24%. Why did you stop using Nim? ___________________________ @@ -542,8 +538,8 @@ were most popular among our user base. The popular. In previous questions, we saw respondents mentioning that the Nim tutorial does not go into enough detail about Nim. Thanks to this information we can come to the conclusion that the tutorial needs to be improved -significantly to make sure that our users get the necessary information to use -Nim effectivelly. +significantly to make sure that it gives our users the necessary information +to use Nim effectively. Indeed, many users also use the `Nim manual `_ to learn Nim. @@ -567,6 +563,9 @@ As the author of I wanted to get some statistics surrounding my book. With this in mind, I have created some questions relating to it. +Have you read Nim in Action? +____________________________ + .. raw::html @@ -581,9 +580,13 @@ respondents, not just Nim users. Are you interested in purchasing a copy of `Nim in Action `_? - If so, you can use code ``wm090316lt`` to get 50% off today only! If you - purchase it now you will get access to an early access copy of Nim in Action - in eBook form and will be able to take part in the development of this book. + If so, you can use code ``wm090316lt`` to get 50% off the eBook today only! + If you purchase it now you will get access to an early access copy of + Nim in Action in eBook form and will be able to take part in the development + of this book. + +Did you enjoy Nim in Action? +____________________________ .. raw::html @@ -610,9 +613,9 @@ Nim version 1.0 can be released. It appears that the standard library is the biggest concern. With more than half -of all respondents selecting the "The standard library needs to reviewed and -any problems with it fixed". This is in fact one of our goals, so it's good -to see that the majority agrees with us. +of all respondents selecting "The standard library needs to reviewed and +any problems with it fixed". This is in fact something we are already planning +to address, so it's good to see that the majority agrees with us. A large proportion of users also believes that the language is great as-is and that we should focus on stabilising the compiler. This somewhat contradicts From e70f02787028c521e1aad41fe9f2fe3d05af0528 Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sat, 3 Sep 2016 21:16:38 +0200 Subject: [PATCH 091/292] Change Nim in Action banner link on front page. --- tools/website.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/website.tmpl b/tools/website.tmpl index cf2c72a60..dc21de7b1 100644 --- a/tools/website.tmpl +++ b/tools/website.tmpl @@ -66,7 +66,7 @@

From a994f142b5f47e36dc5bea8335ba0148b017bbb5 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sat, 3 Sep 2016 22:46:10 +0300 Subject: [PATCH 092/292] Enabled logging tests for js --- lib/pure/logging.nim | 9 +++++---- tests/testament/categories.nim | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/pure/logging.nim b/lib/pure/logging.nim index ad5c34e95..b23b1e5bb 100644 --- a/lib/pure/logging.nim +++ b/lib/pure/logging.nim @@ -336,10 +336,11 @@ proc getLogFilter*(): Level = when not defined(testing) and isMainModule: var L = newConsoleLogger() - var fL = newFileLogger("test.log", fmtStr = verboseFmtStr) - var rL = newRollingFileLogger("rolling.log", fmtStr = verboseFmtStr) + when not defined(js): + var fL = newFileLogger("test.log", fmtStr = verboseFmtStr) + var rL = newRollingFileLogger("rolling.log", fmtStr = verboseFmtStr) + addHandler(fL) + addHandler(rL) addHandler(L) - addHandler(fL) - addHandler(rL) for i in 0 .. 25: info("hello", i) diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index 29b6d9aba..eaf000f86 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -228,8 +228,8 @@ proc jsTests(r: var TResults, cat: Category, options: string) = "varres/tvartup", "misc/tints", "misc/tunsignedinc"]: test "tests/" & testfile & ".nim" - for testfile in ["pure/strutils", "pure/json", "pure/random", "pure/times"]: - test "lib/" & testfile & ".nim" + for testfile in ["strutils", "json", "random", "times", "logging"]: + test "lib/pure/" & testfile & ".nim" # ------------------------- manyloc ------------------------------------------- #proc runSpecialTests(r: var TResults, options: string) = From 015e22c8c0adc181992eede09acd8df24b488180 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Sun, 4 Sep 2016 01:22:04 +0300 Subject: [PATCH 093/292] Add upcoming/asyncdispatch.nim to tests. --- tests/async/config.nims | 2 ++ tests/testament/categories.nim | 10 ++++++++++ 2 files changed, 12 insertions(+) create mode 100644 tests/async/config.nims diff --git a/tests/async/config.nims b/tests/async/config.nims new file mode 100644 index 000000000..97c2e0aa4 --- /dev/null +++ b/tests/async/config.nims @@ -0,0 +1,2 @@ +when defined(upcoming): + patchFile("stdlib", "asyncdispatch", "$lib/upcoming/asyncdispatch") diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index 29b6d9aba..f250d8a45 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -202,6 +202,14 @@ proc ioTests(r: var TResults, cat: Category, options: string) = testSpec c, makeTest("tests/system/helpers/readall_echo", options, cat) testSpec r, makeTest("tests/system/io", options, cat) +# ------------------------- async tests --------------------------------------- +proc asyncTests(r: var TResults, cat: Category, options: string) = + template test(filename: untyped) = + testSpec r, makeTest(filename, options, cat) + testSpec r, makeTest(filename, options & " -d:upcoming_async", cat) + for t in os.walkFiles("tests/async/t*.nim"): + test(t) + # ------------------------- debugger tests ------------------------------------ proc debuggerTests(r: var TResults, cat: Category, options: string) = @@ -390,6 +398,8 @@ proc processCategory(r: var TResults, cat: Category, options: string, fileGlob: threadTests r, cat, options & " --threads:on" of "io": ioTests r, cat, options + of "async": + asyncTests r, cat, options of "lib": testStdlib(r, "lib/pure/*.nim", options, cat) testStdlib(r, "lib/packages/docutils/highlite", options, cat) From 5a1db8af54a227cac8e974734e67f1b2e29821ad Mon Sep 17 00:00:00 2001 From: cheatfate Date: Sun, 4 Sep 2016 01:48:13 +0300 Subject: [PATCH 094/292] Fix define. --- tests/testament/categories.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index f250d8a45..13f732e3b 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -206,7 +206,7 @@ proc ioTests(r: var TResults, cat: Category, options: string) = proc asyncTests(r: var TResults, cat: Category, options: string) = template test(filename: untyped) = testSpec r, makeTest(filename, options, cat) - testSpec r, makeTest(filename, options & " -d:upcoming_async", cat) + testSpec r, makeTest(filename, options & " -d:upcoming", cat) for t in os.walkFiles("tests/async/t*.nim"): test(t) From 63f05769fa98a59b887d0332c27481b860d40437 Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sun, 4 Sep 2016 01:21:40 +0200 Subject: [PATCH 095/292] Finishing touches on survey article. --- .../images/survey/project_size_nim_rust.png | Bin 44455 -> 44546 bytes web/news.rst | 3 +++ ...16_09_03_nim_community_survey_results.rst} | 4 ++-- web/ticker.html | 10 +++++----- 4 files changed, 10 insertions(+), 7 deletions(-) rename web/news/{nim_community_survey_results.rst => 2016_09_03_nim_community_survey_results.rst} (99%) diff --git a/web/assets/news/images/survey/project_size_nim_rust.png b/web/assets/news/images/survey/project_size_nim_rust.png index 41e3ec8b1da0f9bc04a5801264385295e1234fab..4bc0e6b47b5634d5bb16b35df579490919f1f5cd 100644 GIT binary patch literal 44546 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 +=================================== + `2016-08-06 BountySource Update: The Road to v1.0 `_ =================================== diff --git a/web/news/nim_community_survey_results.rst b/web/news/2016_09_03_nim_community_survey_results.rst similarity index 99% rename from web/news/nim_community_survey_results.rst rename to web/news/2016_09_03_nim_community_survey_results.rst index a7a0c5cff..a94d420b1 100644 --- a/web/news/nim_community_survey_results.rst +++ b/web/news/2016_09_03_nim_community_survey_results.rst @@ -3,7 +3,7 @@ Nim Community Survey Results .. container:: metadata - Posted by Dominik Picheta on 20/08/2016 + Posted by Dominik Picheta on 3 September 2016 We have recently closed the 2016 Nim Community Survey. I am happy to say that we have received exactly 790 responses, huge thanks go to the people @@ -242,7 +242,7 @@ of that it's good to know which editor is most popular among our community. Looks like Vim is the winner with almost 30%. Followed by Sublime Text and -Visual Studio Code. Aporia, the Nim IDE, gets a respectable 15.5%. There was +Emacs. Aporia, the Nim IDE, gets a respectable 15.5%. There was also more than 17% of answers which included "Other" editors, such as: Notepad++, Geany, gedit, and Kate. diff --git a/web/ticker.html b/web/ticker.html index ecbfb5e3f..7a1d620d3 100644 --- a/web/ticker.html +++ b/web/ticker.html @@ -1,3 +1,8 @@ + +

September 3, 2016

+

Nim Community Survey results

+
+

August 6, 2016

BountySource Update: The Road to v1.0

@@ -17,9 +22,4 @@

June 04, 2016

Meet our BountySource sponsors

- - -

January 27, 2016

-

Nim in Action is now available!

-
See All News... From 409cd07c737d78f3dcc133b03c49393f83bce1df Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sun, 4 Sep 2016 14:45:50 +0200 Subject: [PATCH 096/292] More accurate generation of sponsors list. --- web/bountysource.nim | 70 +++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/web/bountysource.nim b/web/bountysource.nim index a4f76417e..1d47cea56 100644 --- a/web/bountysource.nim +++ b/web/bountysource.nim @@ -29,12 +29,6 @@ proc newBountySource(team, token: string): BountySource = result.client.headers["Referer"] = "https://salt.bountysource.com/teams/nim/admin/supporters" result.client.headers["Origin"] = "https://salt.bountysource.com/" -proc getSupportLevels(self: BountySource): Future[JsonNode] {.async.} = - let response = await self.client.get(apiUrl & - "/support_levels?supporters_for_team=" & self.team) - doAssert response.status.startsWith($Http200) # TODO: There should be a == - return parseJson(response.body) - proc getSupporters(self: BountySource): Future[JsonNode] {.async.} = let response = await self.client.get(apiUrl & "/supporters?order=monthly&per_page=200&team_slug=" & self.team) @@ -47,26 +41,21 @@ proc getGithubUser(username: string): Future[JsonNode] {.async.} = if response.status.startsWith($Http200): return parseJson(response.body) else: + echo("Could not get Github user: ", username, ". ", response.status) return nil -proc processLevels(supportLevels: JsonNode) = - var before = supportLevels.elems.len - supportLevels.elems.keepIf( - item => item["status"].getStr == "active" and - item["owner"]["display_name"].getStr != "Anonymous" +proc processSupporters(supporters: JsonNode) = + var before = supporters.elems.len + supporters.elems.keepIf( + item => item["display_name"].getStr != "Anonymous" ) - echo("Found ", before - supportLevels.elems.len, " sponsors that cancelled or didn't pay.") - echo("Found ", supportLevels.elems.len, " active sponsors!") + echo("Discarded ", before - supporters.elems.len, " anonymous sponsors.") + echo("Found ", supporters.elems.len, " named sponsors.") - supportLevels.elems.sort( - (x, y) => cmp(y["amount"].getFNum, x["amount"].getFNum) + supporters.elems.sort( + (x, y) => cmp(y["alltime_amount"].getFNum, x["alltime_amount"].getFNum) ) -proc getSupporter(supporters: JsonNode, displayName: string): JsonNode = - for supporter in supporters: - if supporter["display_name"].getStr == displayName: - return supporter - doAssert false proc quote(text: string): string = if {' ', ','} in text: @@ -81,7 +70,7 @@ proc getLevel(amount: float): int = if amount.int <= i: result = i -proc writeCsv(sponsors: seq[Sponsor]) = +proc writeCsv(sponsors: seq[Sponsor], filename="sponsors.new.csv") = var csv = "" csv.add "logo, name, url, this_month, all_time, since, level\n" for sponsor in sponsors: @@ -91,7 +80,8 @@ proc writeCsv(sponsors: seq[Sponsor]) = $sponsor.allTime.int, sponsor.since.format("MMM d, yyyy").quote, $sponsor.amount.getLevel ] - writeFile("sponsors.new.csv", csv) + writeFile(filename, csv) + echo("Written csv file to ", filename) when isMainModule: if paramCount() == 0: @@ -105,14 +95,13 @@ when isMainModule: echo("Getting sponsors...") let supporters = waitFor bountysource.getSupporters() - - var supportLevels = waitFor bountysource.getSupportLevels() - processLevels(supportLevels) + processSupporters(supporters) echo("Generating sponsors list... (please be patient)") - var sponsors: seq[Sponsor] = @[] - for supportLevel in supportLevels: - let name = supportLevel["owner"]["display_name"].getStr + var activeSponsors: seq[Sponsor] = @[] + var inactiveSponsors: seq[Sponsor] = @[] + for supporter in supporters: + let name = supporter["display_name"].getStr var url = "" let ghUser = waitFor getGithubUser(name) if not ghUser.isNil: @@ -124,21 +113,28 @@ when isMainModule: if url.len > 0 and not url.startsWith("http"): url = "http://" & url - let amount = supportLevel["amount"].getFNum + let amount = supporter["monthly_amount"].getFNum() # Only show URL when user donated at least $5. if amount < 5: url = "" - let supporter = getSupporter(supporters, supportLevel["owner"]["display_name"].getStr) + #let supporter = getSupporter(supporters, + # supportLevel["owner"]["display_name"].getStr) + #if supporter.isNil: continue var logo = "" if amount >= 75: discard # TODO - sponsors.add(Sponsor(name: name, url: url, logo: logo, amount: amount, - allTime: supporter["alltime_amount"].getFNum(), - since: parse(supporter["created_at"].getStr, "yyyy-MM-dd'T'hh:mm:ss") - )) + let sponsor = Sponsor(name: name, url: url, logo: logo, amount: amount, + allTime: supporter["alltime_amount"].getFNum(), + since: parse(supporter["created_at"].getStr, "yyyy-MM-dd'T'hh:mm:ss") + ) + if supporter["monthly_amount"].getFNum > 0.0: + activeSponsors.add(sponsor) + else: + inactiveSponsors.add(sponsor) - echo("Generated ", sponsors.len, " sponsors") - writeCsv(sponsors) - echo("Written csv file to sponsors.new.csv") + echo("Generated ", activeSponsors.len, " active sponsors") + echo("Generated ", inactiveSponsors.len, " inactive sponsors") + writeCsv(activeSponsors) + writeCsv(inactiveSponsors, "inactive_sponsors.new.csv") From 7982fc4f098587e3a5dda7266e295c2b2c90bf4d Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sun, 4 Sep 2016 15:24:46 +0200 Subject: [PATCH 097/292] Show inactive supporters on sponsors page too. --- tools/nimweb.nim | 10 +-- tools/website.tmpl | 25 +++++-- web/inactive_sponsors.csv | 44 +++++++++++++ ...016_09_03_nim_community_survey_results.rst | 2 +- web/sponsors.csv | 65 ++++++++++--------- 5 files changed, 105 insertions(+), 41 deletions(-) create mode 100644 web/inactive_sponsors.csv diff --git a/tools/nimweb.nim b/tools/nimweb.nim index 4cf7020c2..cef4df1c6 100644 --- a/tools/nimweb.nim +++ b/tools/nimweb.nim @@ -94,7 +94,8 @@ Compile_options: rYearMonthDay = r"(\d{4})_(\d{2})_(\d{2})" rssUrl = "http://nim-lang.org/news.xml" rssNewsUrl = "http://nim-lang.org/news.html" - sponsors = "web/sponsors.csv" + activeSponsors = "web/sponsors.csv" + inactiveSponsors = "web/inactive_sponsors.csv" validAnchorCharacters = Letters + Digits @@ -446,8 +447,9 @@ proc readSponsors(sponsorsFile: string): seq[Sponsor] = since: parser.row[5], level: parser.row[6].parseInt)) parser.close() -proc buildSponsors(c: var TConfigData, sponsorsFile: string, outputDir: string) = - let sponsors = generateSponsors(readSponsors(sponsorsFile)) +proc buildSponsors(c: var TConfigData, outputDir: string) = + let sponsors = generateSponsorsPage(readSponsors(activeSponsors), + readSponsors(inactiveSponsors)) let outFile = outputDir / "sponsors.html" var f: File if open(f, outFile, fmWrite): @@ -500,7 +502,7 @@ proc buildWebsite(c: var TConfigData) = buildPage(c, file, if file == "question": "FAQ" else: file, rss) copyDir("web/assets", "web/upload/assets") buildNewsRss(c, "web/upload") - buildSponsors(c, sponsors, "web/upload") + buildSponsors(c, "web/upload") buildNews(c, "web/news", "web/upload/news") proc main(c: var TConfigData) = diff --git a/tools/website.tmpl b/tools/website.tmpl index dc21de7b1..87e1b151c 100644 --- a/tools/website.tmpl +++ b/tools/website.tmpl @@ -218,14 +218,9 @@ runForever() #end proc # +# #proc generateSponsors(sponsors: seq[Sponsor]): string = #result = "" -

Our Current Sponsors

-

This page lists the companies and individuals that are, very kindly, contributing a -monthly amount to help sustain Nim's development. For more details take a -look at the Bountysource campaign.

-

Last updated: ${getTime().getGMTime().format("dd/MM/yyyy")}

-
#for sponsor in sponsors:
#if sponsor.url.len > 0: @@ -248,6 +243,24 @@ look at the Bountysource campa Donated $$${sponsor.allTime} in total since ${sponsor.since} #end for +#end proc +#proc generateSponsorsPage(activeSponsors, inactiveSponsors: seq[Sponsor]): string = +#result = "" +

Our Current Sponsors

+

This section lists the companies and individuals that are, very kindly, contributing a +monthly amount to help sustain Nim's development. For more details take a +look at the Bountysource campaign.

+

Last updated: ${getTime().getGMTime().format("dd/MM/yyyy")}

+
+${generateSponsors(activeSponsors)} +
+# +

Our Past Sponsors

+

This section lists the companies and individuals that have contributed +money in the past to help sustain Nim's development. For more details take a +look at the Bountysource campaign.

+
+${generateSponsors(inactiveSponsors)}
# #end proc diff --git a/web/inactive_sponsors.csv b/web/inactive_sponsors.csv new file mode 100644 index 000000000..929882ff4 --- /dev/null +++ b/web/inactive_sponsors.csv @@ -0,0 +1,44 @@ +logo, name, url, this_month, all_time, since, level +,mikra,,0,400,"Apr 28, 2016",1 +,linkmonitor,,0,180,"Jan 28, 2016",1 +,"Benny Luypaert",,0,100,"Apr 10, 2016",1 +,"Chris Heller",,0,100,"May 19, 2016",1 +,PhilipWitte,,0,100,"Aug 5, 2016",1 +,Boxifier,,0,75,"Apr 12, 2016",1 +,iolloyd,,0,75,"Apr 29, 2016",1 +,WilRubin,,0,50,"Aug 11, 2015",1 +,rb01,,0,50,"May 4, 2016",1 +,TedSinger,,0,45,"Apr 9, 2016",1 +,martinbbjerregaard,,0,35,"Jun 9, 2016",1 +,benbve,,0,30,"Jul 12, 2016",1 +,barcharcraz,,0,25,"Jun 2, 2016",1 +,"Landon Bass",,0,25,"Jun 7, 2016",1 +,jimrichards,,0,25,"Jun 8, 2016",1 +,jjzazuet,,0,25,"Jul 10, 2016",1 +,zolern,,0,20,"Apr 15, 2016",1 +,mirek,,0,15,"Apr 9, 2016",1 +,rickc,,0,15,"Jul 31, 2016",1 +,jpkx1984,,0,13,"Jul 11, 2016",1 +,vlkrav,,0,12,"Aug 9, 2015",1 +,tebanep,,0,12,"Aug 7, 2016",1 +,McSpiros,,0,10,"Apr 6, 2016",1 +,"Brandon Hunter",,0,10,"Apr 7, 2016",1 +,funny-falcon,,0,10,"Apr 7, 2016",1 +,teroz,,0,10,"Apr 8, 2016",1 +,iLikeLego,,0,10,"Apr 16, 2016",1 +,Angluca,,0,10,"May 3, 2016",1 +,calind,,0,10,"Jun 7, 2016",1 +,goldenreign,,0,10,"Jun 10, 2016",1 +,kteza1,,0,10,"Jun 10, 2016",1 +,cinnabardk,,0,10,"Aug 6, 2016",1 +,reddec,,0,10,"Aug 31, 2016",1 +,niv,,0,5,"Apr 6, 2016",1 +,goniz,,0,5,"Apr 7, 2016",1 +,genunix,,0,5,"Apr 12, 2016",1 +,CynepHy6,,0,5,"Apr 14, 2016",1 +,ivanflorentin,,0,5,"May 3, 2016",1 +,stevenyhw,,0,5,"May 20, 2016",1 +,"Sanjay Singh",,0,5,"Jun 6, 2016",1 +,yuttie,,0,5,"Jun 7, 2016",1 +,hron,,0,5,"Jun 11, 2016",1 +,laszlowaty,,0,5,"Jun 17, 2016",1 diff --git a/web/news/2016_09_03_nim_community_survey_results.rst b/web/news/2016_09_03_nim_community_survey_results.rst index a94d420b1..106dce0e4 100644 --- a/web/news/2016_09_03_nim_community_survey_results.rst +++ b/web/news/2016_09_03_nim_community_survey_results.rst @@ -580,7 +580,7 @@ respondents, not just Nim users. Are you interested in purchasing a copy of `Nim in Action `_? - If so, you can use code ``wm090316lt`` to get 50% off the eBook today only! + If so, you can use code ``wm090416lt`` to get 50% off the printed book today only! If you purchase it now you will get access to an early access copy of Nim in Action in eBook form and will be able to take part in the development of this book. diff --git a/web/sponsors.csv b/web/sponsors.csv index ac35b284c..fe0261d17 100644 --- a/web/sponsors.csv +++ b/web/sponsors.csv @@ -1,31 +1,36 @@ logo, name, url, this_month, all_time, since, level -assets/bountysource/secondspectrum.png,Second Spectrum,http://www.secondspectrum.com/,250,750,"May 5, 2016",250 -assets/bountysource/xored.svg,"Xored Software, Inc.",http://xored.com/,250,500,"Jun 20, 2016",250 -,avsej,http://avsej.net,75,85,"Jun 10, 2016",75 -,shkolnick-kun,https://github.com/shkolnick-kun,75,75,"Jul 6, 2016",75 -,flyx,http://flyx.org,35,140,"Apr 7, 2016",75 -,endragor,https://github.com/endragor,25,100,"Apr 7, 2016",25 -,euantorano,http://euantorano.co.uk,25,50,"Jun 7, 2016",25 -,FedericoCeratto,http://firelet.net,25,100,"Apr 7, 2016",25 -,"Adrian Veith",,25,100,"Apr 20, 2016",25 -,xxlabaza,https://github.com/xxlabaza,25,45,"Jun 17, 2016",25 -,"Yuriy Glukhov",,25,100,"Apr 6, 2016",25 -,"Jonathan Arnett",,10,30,"May 20, 2016",10 -,"Oskari Timperi",,10,20,"Jun 8, 2016",10 -,zachaysan,http://venn.lc,10,20,"Jun 7, 2016",10 -,"Matthew Baulch",,10,20,"Jun 7, 2016",10 -,RationalG,https://github.com/RationalG,10,20,"Jun 17, 2016",10 -,btbytes,https://www.btbytes.com/,10,40,"Apr 6, 2016",10 -,niebaopeng,https://github.com/niebaopeng,10,30,"Apr 15, 2016",10 -,moigagoo,http://sloth-ci.com,5,15,"May 13, 2016",5 -,calind,http://calindon.net,5,10,"Jun 7, 2016",5 -,swalf,https://github.com/swalf,5,35,"May 9, 2016",5 -,johnnovak,http://www.johnnovak.net/,5,20,"Apr 29, 2016",5 -,RyanMarcus,http://rmarcus.info,5,5,"Jul 19, 2016",5 -,Blumenversand,https://blumenversender.com/,5,5,"Jul 21, 2016",5 -,lenzenmi,https://github.com/lenzenmi,5,5,"Jul 28, 2016",5 -,"Handojo Goenadi",,5,20,"Apr 19, 2016",5 -,"Date in Asia",,5,5,"Jul 30, 2016",5 -,"Matthew Newton",,5,20,"Apr 20, 2016",5 -,"Michael D. Sklaroff",,1,4,"Apr 27, 2016",1 -,"Svend Knudsen",,1,4,"Apr 11, 2016",1 +,bogen,https://github.com/bogen,250,1010,"Jul 23, 2016",250 +assets/bountysource/secondspectrum.png,Second Spectrum,http://www.secondspectrum.com/,250,1000,"May 5, 2016",250 +assets/bountysource/xored.svg,"Xored Software, Inc.",http://xored.com/,250,750,"Jun 20, 2016",250 +,flyx,http://flyx.org,35,175,"Apr 7, 2016",75 +,shkolnick-kun,https://github.com/shkolnick-kun,75,150,"Jul 6, 2016",75 +,"Yuriy Glukhov",,25,125,"Apr 6, 2016",25 +,endragor,https://github.com/endragor,25,125,"Apr 7, 2016",25 +,FedericoCeratto,http://firelet.net,25,125,"Apr 7, 2016",25 +,"Adrian Veith",,25,125,"Apr 20, 2016",25 +,avsej,http://avsej.net,25,110,"Jun 10, 2016",25 +,euantorano,http://euantorano.co.uk,25,75,"Jun 7, 2016",25 +,xxlabaza,https://github.com/xxlabaza,25,70,"Jun 17, 2016",25 +,btbytes,https://www.btbytes.com/,10,50,"Apr 6, 2016",10 +,niebaopeng,https://github.com/niebaopeng,10,40,"Apr 15, 2016",10 +,"pyloor ",https://schwarz-weiss.cc/,10,40,"May 16, 2016",10 +,"Jonathan Arnett",,10,40,"May 20, 2016",10 +,swalf,https://github.com/swalf,5,40,"May 9, 2016",5 +,zachaysan,http://venn.lc,10,30,"Jun 7, 2016",10 +,"Matthew Baulch",,10,30,"Jun 7, 2016",10 +,"Oskari Timperi",,10,30,"Jun 8, 2016",10 +,RationalG,https://github.com/RationalG,10,30,"Jun 17, 2016",10 +,"Handojo Goenadi",,5,25,"Apr 19, 2016",5 +,"Matthew Newton",,5,25,"Apr 20, 2016",5 +,johnnovak,http://www.johnnovak.net/,5,25,"Apr 29, 2016",5 +,moigagoo,http://sloth-ci.com,5,20,"May 13, 2016",5 +,RyanMarcus,http://rmarcus.info,5,10,"Jul 19, 2016",5 +,Blumenversand,https://github.com/blumenversand,5,10,"Jul 21, 2016",5 +,lenzenmi,https://github.com/lenzenmi,5,10,"Jul 28, 2016",5 +,DateinAsia,,5,10,"Jul 30, 2016",5 +,pandada8,https://github.com/pandada8,5,5,"Aug 12, 2016",5 +,abeaumont,http://alfredobeaumont.org/blog,5,5,"Aug 12, 2016",5 +,"Svend Knudsen",,1,5,"Apr 11, 2016",1 +,"Michael D. Sklaroff",,1,5,"Apr 27, 2016",1 +,nicck,,1,1,"Aug 9, 2016",1 + From 99bbda28ee728aea14636010721e7a4acc55bb4a Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Sun, 4 Sep 2016 22:57:10 +0300 Subject: [PATCH 098/292] Store stack trace in exception --- lib/system/jssys.nim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index 31d283cd7..39ce1183b 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -109,6 +109,7 @@ proc rawWriteStackTrace(): string = result = "No stack traceback available\n" proc getStackTrace*(): string = rawWriteStackTrace() +proc getStackTrace*(e: ref Exception): string = e.trace proc unhandledException(e: ref Exception) {. compilerproc, asmNoStackFrame.} = @@ -142,6 +143,8 @@ proc raiseException(e: ref Exception, ename: cstring) {. when defined(nimphp): asm """throw new Exception($`e`["message"]);""" else: + when NimStackTrace: + e.trace = rawWriteStackTrace() asm "throw `e`;" proc reraiseException() {.compilerproc, asmNoStackFrame.} = From dfa0699e732619fc2e47aa8ad6990296d93e67b9 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sun, 4 Sep 2016 22:27:38 +0200 Subject: [PATCH 099/292] C++ backend: use .noInit pragma for non-public default constructors; refs #4687 --- compiler/ast.nim | 4 ++-- compiler/ccgexprs.nim | 11 +++++++---- compiler/ccgstmts.nim | 1 + compiler/cgen.nim | 36 ++++++++++++++++++++++++++++++------ compiler/suggest.nim | 11 +++++------ 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/compiler/ast.nim b/compiler/ast.nim index 347060248..131c2a38f 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -437,7 +437,7 @@ type nfExplicitCall # x.y() was used instead of x.y nfExprCall # this is an attempt to call a regular expression nfIsRef # this node is a 'ref' node; used for the VM - nfIsCursor # this node is attached a cursor; used for idetools + nfPreventCg # this node should be ignored by the codegen TNodeFlags* = set[TNodeFlag] TTypeFlag* = enum # keep below 32 for efficiency reasons (now: 28) @@ -925,7 +925,7 @@ const skMacro, skTemplate, skConverter, skEnumField, skLet, skStub, skAlias} PersistentNodeFlags*: TNodeFlags = {nfBase2, nfBase8, nfBase16, nfDotSetter, nfDotField, - nfIsRef, nfIsCursor, nfLL} + nfIsRef, nfPreventCg, nfLL} namePos* = 0 patternPos* = 1 # empty except for term rewriting macros genericParamsPos* = 2 diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index e1ee6f1de..0ba775b25 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -2084,11 +2084,14 @@ proc expr(p: BProc, n: PNode, d: var TLoc) = of nkCaseStmt: genCase(p, n, d) of nkReturnStmt: genReturnStmt(p, n) of nkBreakStmt: genBreakStmt(p, n) - of nkAsgn: genAsgn(p, n, fastAsgn=false) + of nkAsgn: + if nfPreventCg notin n.flags: + genAsgn(p, n, fastAsgn=false) of nkFastAsgn: - # transf is overly aggressive with 'nkFastAsgn', so we work around here. - # See tests/run/tcnstseq3 for an example that would fail otherwise. - genAsgn(p, n, fastAsgn=p.prc != nil) + if nfPreventCg notin n.flags: + # transf is overly aggressive with 'nkFastAsgn', so we work around here. + # See tests/run/tcnstseq3 for an example that would fail otherwise. + genAsgn(p, n, fastAsgn=p.prc != nil) of nkDiscardStmt: if n.sons[0].kind != nkEmpty: genLineDir(p, n) diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index 1b21e641a..294235ae9 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -359,6 +359,7 @@ proc blockLeaveActions(p: BProc, howManyTrys, howManyExcepts: int) = linefmt(p, cpsStmts, "#popCurrentException();$n") proc genReturnStmt(p: BProc, t: PNode) = + if nfPreventCg in t.flags: return p.beforeRetNeeded = true genLineDir(p, t) if (t.sons[0].kind != nkEmpty): genStmts(p, t.sons[0]) diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 4a3113edf..7333c77c3 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -616,6 +616,24 @@ proc closureSetup(p: BProc, prc: PSym) = linefmt(p, cpsStmts, "$1 = ($2) ClEnv;$n", rdLoc(env.loc), getTypeDesc(p.module, env.typ)) +proc easyResultAsgn(n: PNode): PNode = + const harmless = {nkConstSection, nkTypeSection, nkEmpty, nkCommentStmt} + + declarativeDefs + case n.kind + of nkStmtList, nkStmtListExpr: + var i = 0 + while i < n.len and n[i].kind in harmless: inc i + if i < n.len: result = easyResultAsgn(n[i]) + of nkAsgn, nkFastAsgn: + if n[0].kind == nkSym and skResult == n[0].sym.kind: + incl n.flags, nfPreventCg + return n[1] + of nkReturnStmt: + if n.len > 0: + result = easyResultAsgn(n[0]) + if result != nil: incl n.flags, nfPreventCg + else: discard + proc genProcAux(m: BModule, prc: PSym) = var p = newProc(prc, m) var header = genProcHeader(m, prc) @@ -627,11 +645,17 @@ proc genProcAux(m: BModule, prc: PSym) = var res = prc.ast.sons[resultPos].sym # get result symbol if not isInvalidReturnType(prc.typ.sons[0]): if sfNoInit in prc.flags: incl(res.flags, sfNoInit) - # declare the result symbol: - assignLocalVar(p, res) - assert(res.loc.r != nil) + if sfNoInit in prc.flags and p.module.compileToCpp and (let val = easyResultAsgn(prc.getBody); val != nil): + var decl = localVarDecl(p, res) + var a: TLoc + initLocExprSingleUse(p, val, a) + linefmt(p, cpsStmts, "$1 = $2;$n", decl, rdLoc(a)) + else: + # declare the result symbol: + assignLocalVar(p, res) + assert(res.loc.r != nil) + initLocalVar(p, res, immediateAsgn=false) returnStmt = rfmt(nil, "\treturn $1;$n", rdLoc(res.loc)) - initLocalVar(p, res, immediateAsgn=false) else: fillResult(res) assignParam(p, res) @@ -791,12 +815,12 @@ proc addIntTypes(result: var Rope) {.inline.} = proc getCopyright(cfile: string): Rope = if optCompileOnly in gGlobalOptions: result = ("/* Generated by Nim Compiler v$1 */$N" & - "/* (c) 2015 Andreas Rumpf */$N" & + "/* (c) 2016 Andreas Rumpf */$N" & "/* The generated code is subject to the original license. */$N") % [rope(VersionAsString)] else: result = ("/* Generated by Nim Compiler v$1 */$N" & - "/* (c) 2015 Andreas Rumpf */$N" & + "/* (c) 2016 Andreas Rumpf */$N" & "/* The generated code is subject to the original license. */$N" & "/* Compiled for: $2, $3, $4 */$N" & "/* Command for C compiler:$n $5 */$N") % diff --git a/compiler/suggest.nim b/compiler/suggest.nim index f331fce69..52f00550b 100644 --- a/compiler/suggest.nim +++ b/compiler/suggest.nim @@ -413,17 +413,16 @@ proc safeSemExpr*(c: PContext, n: PNode): PNode = result = ast.emptyNode proc suggestExpr*(c: PContext, node: PNode) = - if nfIsCursor notin node.flags: - if gTrackPos.line < 0: return - var cp = inCheckpoint(node.info) - if cp == cpNone: return + if gTrackPos.line < 0: return + var cp = inCheckpoint(node.info) + if cp == cpNone: return var outputs = 0 # This keeps semExpr() from coming here recursively: if c.compilesContextId > 0: return inc(c.compilesContextId) if gIdeCmd == ideSug: - var n = if nfIsCursor in node.flags: node else: findClosestDot(node) + var n = findClosestDot(node) if n == nil: n = node if n.kind == nkDotExpr: var obj = safeSemExpr(c, n.sons[0]) @@ -436,7 +435,7 @@ proc suggestExpr*(c: PContext, node: PNode) = suggestEverything(c, n, outputs) elif gIdeCmd == ideCon: - var n = if nfIsCursor in node.flags: node else: findClosestCall(node) + var n = findClosestCall(node) if n == nil: n = node if n.kind in nkCallKinds: var a = copyNode(n) From 4077050a423973c9d713f67ebf73c94e83392e17 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 5 Sep 2016 08:51:38 +0200 Subject: [PATCH 100/292] fixes a critical tables bug that caused 'enlarge' to crash after 'add' --- lib/pure/collections/sharedtables.nim | 19 +++++++++++-------- lib/pure/collections/tables.nim | 9 ++++++--- tests/collections/tableadds.nim | 13 +++++++++++++ 3 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 tests/collections/tableadds.nim diff --git a/lib/pure/collections/sharedtables.nim b/lib/pure/collections/sharedtables.nim index 17600b272..7dc338f4e 100644 --- a/lib/pure/collections/sharedtables.nim +++ b/lib/pure/collections/sharedtables.nim @@ -35,9 +35,12 @@ proc enlarge[A, B](t: var SharedTable[A, B]) = t.dataLen = size swap(t.data, n) for i in 0.. Date: Mon, 5 Sep 2016 15:43:44 +0700 Subject: [PATCH 101/292] xmltree: separate escaping for attributes --- lib/pure/xmltree.nim | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/pure/xmltree.nim b/lib/pure/xmltree.nim index a9fc8998a..3c6eb14e3 100644 --- a/lib/pure/xmltree.nim +++ b/lib/pure/xmltree.nim @@ -226,6 +226,18 @@ proc noWhitespace(n: XmlNode): bool = proc add*(result: var string, n: XmlNode, indent = 0, indWidth = 2) = ## adds the textual representation of `n` to `result`. + + proc addEscapedAttr(result: var string, s: string) = + # `addEscaped` alternative with less escaped characters. + # Only to be used for escaping attribute values enclosed in double quotes! + for c in items(s): + case c + of '<': result.add("<") + of '>': result.add(">") + of '&': result.add("&") + of '"': result.add(""") + else: result.add(c) + if n == nil: return case n.k of xnElement: @@ -236,7 +248,7 @@ proc add*(result: var string, n: XmlNode, indent = 0, indWidth = 2) = result.add(' ') result.add(key) result.add("=\"") - result.addEscaped(val) + result.addEscapedAttr(val) result.add('"') if n.len > 0: result.add('>') @@ -381,6 +393,5 @@ proc findAll*(n: XmlNode, tag: string): seq[XmlNode] = findAll(n, tag, result) when isMainModule: - let link = "http://nim-lang.org" - assert """Nim rules.""" == + assert """Nim rules.""" == $(<>a(href="http://nim-lang.org", newText("Nim rules."))) From 4a904d9e57636b48cd5464e23b6b860ed40e5e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20D=C3=B6ring?= Date: Sat, 13 Aug 2016 12:29:36 +0200 Subject: [PATCH 102/292] cstring doc --- doc/manual/types.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/manual/types.txt b/doc/manual/types.txt index 1e2dc857f..d6495dbc3 100644 --- a/doc/manual/types.txt +++ b/doc/manual/types.txt @@ -390,7 +390,10 @@ i-th *unichar*. The iterator ``runes`` from the `unicode module cstring type ------------ -The ``cstring`` type represents a pointer to a zero-terminated char array + +The ``cstring`` type meaning `compatible string` is the native representation +of a string for the compilation backend. For the C backend the ``cstring`` type +represents a pointer to a zero-terminated char array compatible to the type ``char*`` in Ansi C. Its primary purpose lies in easy interfacing with C. The index operation ``s[i]`` means the i-th *char* of ``s``; however no bounds checking for ``cstring`` is performed making the @@ -421,7 +424,6 @@ string from a cstring: var cstr: cstring = str var newstr: string = $cstr - Structured types ---------------- A variable of a structured type can hold multiple values at the same From 901e3dbb77695e77e0bbfa47806cec269a9b8870 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 5 Sep 2016 16:58:33 +0200 Subject: [PATCH 103/292] fixes #4699 --- compiler/semexprs.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 5c29530b8..48af285bb 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -2125,7 +2125,7 @@ proc semObjConstr(c: PContext, n: PNode, flags: TExprFlags): PNode = while true: checkInitialized(objType.n, ids, n.info) if objType.sons[0] == nil: break - objType = skipTypes(objType.sons[0], {tyGenericInst}) + objType = skipTypes(objType.sons[0], skipPtrs) proc semBlock(c: PContext, n: PNode): PNode = result = n From e4c46e6fba65303c7046db28d996df17ec805e4f Mon Sep 17 00:00:00 2001 From: Anatoly Galiulin Date: Wed, 31 Aug 2016 11:18:36 +0700 Subject: [PATCH 104/292] Add async IO operations with buffers on files and sockets --- lib/pure/asyncdispatch.nim | 94 +++++++++++++++++++--- lib/pure/asyncfile.nim | 141 +++++++++++++++++++++++++++++++++ lib/pure/asyncnet.nim | 67 +++++++++++++++- lib/upcoming/asyncdispatch.nim | 94 +++++++++++++++++++--- 4 files changed, 373 insertions(+), 23 deletions(-) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index 6bea8e817..faac79d3b 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -749,7 +749,7 @@ when defined(windows) or defined(nimdoc): retFuture.complete("") return retFuture - proc recvInto*(socket: AsyncFD, buf: cstring, size: int, + proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must ## at least be of that size. Returned future will complete once all the @@ -769,11 +769,11 @@ when defined(windows) or defined(nimdoc): verifyPresence(socket) assert SocketFlag.Peek notin flags, "Peek not supported on Windows." - var retFuture = newFuture[int]("recvInto") + var retFuture = newFuture[int]("recvBuffer") #buf[] = '\0' var dataBuf: TWSABuf - dataBuf.buf = buf + dataBuf.buf = cast[cstring](buf) dataBuf.len = size.ULONG var bytesReceived: Dword @@ -784,10 +784,7 @@ when defined(windows) or defined(nimdoc): proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = if not retFuture.finished: if errcode == OSErrorCode(-1): - if bytesCount == 0 and dataBuf.buf[0] == '\0': - retFuture.complete(0) - else: - retFuture.complete(bytesCount) + retFuture.complete(bytesCount) else: if flags.isDisconnectionError(errcode): retFuture.complete(0) @@ -819,6 +816,51 @@ when defined(windows) or defined(nimdoc): retFuture.complete(bytesReceived) return retFuture + proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + flags = {SocketFlag.SafeDisconn}): Future[void] = + ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all + ## data has been sent. + ## **WARNING**: Use it with caution. If ``buf`` refers to GC'ed object, you must use GC_ref/GC_unref calls + ## to avoid early freeing of the buffer + verifyPresence(socket) + var retFuture = newFuture[void]("send") + + var dataBuf: TWSABuf + dataBuf.buf = cast[cstring](buf) + dataBuf.len = size.ULONG + + var bytesReceived, lowFlags: Dword + var ol = PCustomOverlapped() + GC_ref(ol) + ol.data = CompletionData(fd: socket, cb: + proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = + if not retFuture.finished: + if errcode == OSErrorCode(-1): + retFuture.complete() + else: + if flags.isDisconnectionError(errcode): + retFuture.complete() + else: + retFuture.fail(newException(OSError, osErrorMsg(errcode))) + ) + + let ret = WSASend(socket.SocketHandle, addr dataBuf, 1, addr bytesReceived, + lowFlags, cast[POVERLAPPED](ol), nil) + if ret == -1: + let err = osLastError() + if err.int32 != ERROR_IO_PENDING: + GC_unref(ol) + if flags.isDisconnectionError(err): + retFuture.complete() + else: + retFuture.fail(newException(OSError, osErrorMsg(err))) + else: + retFuture.complete() + # We don't deallocate ``ol`` here because even though this completed + # immediately poll will still be notified about its completion and it will + # free ``ol``. + return retFuture + proc send*(socket: AsyncFD, data: string, flags = {SocketFlag.SafeDisconn}): Future[void] = ## Sends ``data`` to ``socket``. The returned future will complete once all @@ -828,9 +870,9 @@ when defined(windows) or defined(nimdoc): var dataBuf: TWSABuf dataBuf.buf = data - dataBuf.len = data.len.ULONG GC_ref(data) # we need to protect data until send operation is completed # or failed. + dataBuf.len = data.len.ULONG var bytesReceived, lowFlags: Dword var ol = PCustomOverlapped() @@ -1403,9 +1445,9 @@ else: addRead(socket, cb) return retFuture - proc recvInto*(socket: AsyncFD, buf: cstring, size: int, + proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = - var retFuture = newFuture[int]("recvInto") + var retFuture = newFuture[int]("recvBuffer") proc cb(sock: AsyncFD): bool = result = true @@ -1427,6 +1469,38 @@ else: addRead(socket, cb) return retFuture + proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + flags = {SocketFlag.SafeDisconn}): Future[void] = + var retFuture = newFuture[void]("send") + + var written = 0 + + proc cb(sock: AsyncFD): bool = + result = true + let netSize = size-written + var d = cast[cstring](buf) + let res = send(sock.SocketHandle, addr d[written], netSize.cint, + MSG_NOSIGNAL) + if res < 0: + let lastError = osLastError() + if lastError.int32 notin {EINTR, EWOULDBLOCK, EAGAIN}: + if flags.isDisconnectionError(lastError): + retFuture.complete() + else: + retFuture.fail(newException(OSError, osErrorMsg(lastError))) + else: + result = false # We still want this callback to be called. + else: + written.inc(res) + if res != netSize: + result = false # We still have data to send. + else: + retFuture.complete() + # TODO: The following causes crashes. + #if not cb(socket): + addWrite(socket, cb) + return retFuture + proc send*(socket: AsyncFD, data: string, flags = {SocketFlag.SafeDisconn}): Future[void] = var retFuture = newFuture[void]("send") diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim index 5df606ea8..8801c64d0 100644 --- a/lib/pure/asyncfile.nim +++ b/lib/pure/asyncfile.nim @@ -112,6 +112,80 @@ proc openAsync*(filename: string, mode = fmRead): AsyncFile = register(result.fd) +proc readBuffer*(f: AsyncFile, buf: pointer, size: int): Future[int] = + ## Read ``size`` bytes from the specified file asynchronously starting at + ## the current position of the file pointer. + ## + ## If the file pointer is past the end of the file then an empty string is + ## returned. + var retFuture = newFuture[int]("asyncfile.readBuffer") + + when defined(windows) or defined(nimdoc): + var ol = PCustomOverlapped() + GC_ref(ol) + ol.data = CompletionData(fd: f.fd, cb: + proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = + if not retFuture.finished: + if errcode == OSErrorCode(-1): + assert bytesCount > 0 + assert bytesCount <= size + f.offset.inc bytesCount + retFuture.complete(bytesCount) + else: + if errcode.int32 == ERROR_HANDLE_EOF: + retFuture.complete(0) + else: + retFuture.fail(newException(OSError, osErrorMsg(errcode))) + ) + ol.offset = DWord(f.offset and 0xffffffff) + ol.offsetHigh = DWord(f.offset shr 32) + + # According to MSDN we're supposed to pass nil to lpNumberOfBytesRead. + let ret = readFile(f.fd.Handle, buf, size.int32, nil, + cast[POVERLAPPED](ol)) + if not ret.bool: + let err = osLastError() + if err.int32 != ERROR_IO_PENDING: + GC_unref(ol) + retFuture.fail(newException(OSError, osErrorMsg(err))) + else: + # Request completed immediately. + var bytesRead: DWord + let overlappedRes = getOverlappedResult(f.fd.Handle, + cast[POverlapped](ol), bytesRead, false.WinBool) + if not overlappedRes.bool: + let err = osLastError() + if err.int32 == ERROR_HANDLE_EOF: + retFuture.complete(0) + else: + retFuture.fail(newException(OSError, osErrorMsg(osLastError()))) + else: + assert bytesRead > 0 + assert bytesRead <= size + f.offset.inc bytesRead + retFuture.complete(bytesRead) + else: + proc cb(fd: AsyncFD): bool = + result = true + let res = read(fd.cint, cast[cstring](buf), size.cint) + if res < 0: + let lastError = osLastError() + if lastError.int32 != EAGAIN: + retFuture.fail(newException(OSError, osErrorMsg(lastError))) + else: + result = false # We still want this callback to be called. + elif res == 0: + # EOF + retFuture.complete(0) + else: + f.offset.inc(res) + retFuture.complete(res) + + if not cb(f.fd): + addRead(f.fd, cb) + + return retFuture + proc read*(f: AsyncFile, size: int): Future[string] = ## Read ``size`` bytes from the specified file asynchronously starting at ## the current position of the file pointer. @@ -238,6 +312,73 @@ proc readAll*(f: AsyncFile): Future[string] {.async.} = return result.add data +proc writeBuffer*(f: AsyncFile, buf: pointer, size: int): Future[void] = + ## Writes ``size`` bytes from ``buf`` to the file specified asynchronously. + ## + ## The returned Future will complete once all data has been written to the + ## specified file. + var retFuture = newFuture[void]("asyncfile.writeBuffer") + when defined(windows) or defined(nimdoc): + var ol = PCustomOverlapped() + GC_ref(ol) + ol.data = CompletionData(fd: f.fd, cb: + proc (fd: AsyncFD, bytesCount: DWord, errcode: OSErrorCode) = + if not retFuture.finished: + if errcode == OSErrorCode(-1): + assert bytesCount == size.int32 + f.offset.inc(size) + retFuture.complete() + else: + retFuture.fail(newException(OSError, osErrorMsg(errcode))) + ) + ol.offset = DWord(f.offset and 0xffffffff) + ol.offsetHigh = DWord(f.offset shr 32) + + # According to MSDN we're supposed to pass nil to lpNumberOfBytesWritten. + let ret = writeFile(f.fd.Handle, buf, size.int32, nil, + cast[POVERLAPPED](ol)) + if not ret.bool: + let err = osLastError() + if err.int32 != ERROR_IO_PENDING: + GC_unref(ol) + retFuture.fail(newException(OSError, osErrorMsg(err))) + else: + # Request completed immediately. + var bytesWritten: DWord + let overlappedRes = getOverlappedResult(f.fd.Handle, + cast[POverlapped](ol), bytesWritten, false.WinBool) + if not overlappedRes.bool: + retFuture.fail(newException(OSError, osErrorMsg(osLastError()))) + else: + assert bytesWritten == size.int32 + f.offset.inc(size) + retFuture.complete() + else: + var written = 0 + + proc cb(fd: AsyncFD): bool = + result = true + let remainderSize = size-written + var cbuf = cast[cstring](buf) + let res = write(fd.cint, addr cbuf[written], remainderSize.cint) + if res < 0: + let lastError = osLastError() + if lastError.int32 != EAGAIN: + retFuture.fail(newException(OSError, osErrorMsg(lastError))) + else: + result = false # We still want this callback to be called. + else: + written.inc res + f.offset.inc res + if res != remainderSize: + result = false # We still have data to write. + else: + retFuture.complete() + + if not cb(f.fd): + addWrite(f.fd, cb) + return retFuture + proc write*(f: AsyncFile, data: string): Future[void] = ## Writes ``data`` to the file specified asynchronously. ## diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index a1988f4a6..d92100831 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -193,7 +193,7 @@ proc connect*(socket: AsyncSocket, address: string, port: Port) {.async.} = sslSetConnectState(socket.sslHandle) sslLoop(socket, flags, sslDoHandshake(socket.sslHandle)) -template readInto(buf: cstring, size: int, socket: AsyncSocket, +template readInto(buf: pointer, size: int, socket: AsyncSocket, flags: set[SocketFlag]): int = ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``. Note that ## this is a template and not a proc. @@ -202,10 +202,10 @@ template readInto(buf: cstring, size: int, socket: AsyncSocket, when defineSsl: # SSL mode. sslLoop(socket, flags, - sslRead(socket.sslHandle, buf, size.cint)) + sslRead(socket.sslHandle, cast[cstring](buf), size.cint)) res = opResult else: - var recvIntoFut = recvInto(socket.fd.AsyncFD, buf, size, flags) + var recvIntoFut = recvBuffer(socket.fd.AsyncFD, buf, size, flags) yield recvIntoFut # Not in SSL mode. res = recvIntoFut.read() @@ -218,6 +218,54 @@ template readIntoBuf(socket: AsyncSocket, socket.bufLen = size size +proc recvBuffer*(socket: AsyncSocket, buf: pointer, size: int, + flags = {SocketFlag.SafeDisconn}): Future[int] {.async.} = + ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``. + ## + ## For buffered sockets this function will attempt to read all the requested + ## data. It will read this data in ``BufferSize`` chunks. + ## + ## For unbuffered sockets this function makes no effort to read + ## all the data requested. It will return as much data as the operating system + ## gives it. + ## + ## If socket is disconnected during the + ## recv operation then the future may complete with only a part of the + ## requested data. + ## + ## If socket is disconnected and no data is available + ## to be read then the future will complete with a value of ``0``. + if socket.isBuffered: + let originalBufPos = socket.currPos + + if socket.bufLen == 0: + let res = socket.readIntoBuf(flags - {SocketFlag.Peek}) + if res == 0: + return 0 + + var read = 0 + var cbuf = cast[cstring](buf) + while read < size: + if socket.currPos >= socket.bufLen: + if SocketFlag.Peek in flags: + # We don't want to get another buffer if we're peeking. + break + let res = socket.readIntoBuf(flags - {SocketFlag.Peek}) + if res == 0: + break + + let chunk = min(socket.bufLen-socket.currPos, size-read) + copyMem(addr(cbuf[read]), addr(socket.buffer[socket.currPos]), chunk) + read.inc(chunk) + socket.currPos.inc(chunk) + + if SocketFlag.Peek in flags: + # Restore old buffer cursor position. + socket.currPos = originalBufPos + result = read + else: + result = readInto(buf, size, socket, flags) + proc recv*(socket: AsyncSocket, size: int, flags = {SocketFlag.SafeDisconn}): Future[string] {.async.} = ## Reads **up to** ``size`` bytes from ``socket``. @@ -270,6 +318,19 @@ proc recv*(socket: AsyncSocket, size: int, let read = readInto(addr result[0], size, socket, flags) result.setLen(read) +proc sendBuffer*(socket: AsyncSocket, buf: pointer, size: int, + flags = {SocketFlag.SafeDisconn}) {.async.} = + ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all + ## data has been sent. + assert socket != nil + if socket.isSsl: + when defineSsl: + sslLoop(socket, flags, + sslWrite(socket.sslHandle, cast[pointer](buf), size.cint)) + await sendPendingSslData(socket, flags) + else: + await sendBuffer(socket.fd.AsyncFD, buf, size, flags) + proc send*(socket: AsyncSocket, data: string, flags = {SocketFlag.SafeDisconn}) {.async.} = ## Sends ``data`` to ``socket``. The returned future will complete once all diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index ce44e8a6a..1f66ef6c8 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -718,7 +718,7 @@ when defined(windows) or defined(nimdoc): retFuture.complete("") return retFuture - proc recvInto*(socket: AsyncFD, buf: cstring, size: int, + proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must ## at least be of that size. Returned future will complete once all the @@ -738,11 +738,11 @@ when defined(windows) or defined(nimdoc): verifyPresence(socket) assert SocketFlag.Peek notin flags, "Peek not supported on Windows." - var retFuture = newFuture[int]("recvInto") + var retFuture = newFuture[int]("recvBuffer") #buf[] = '\0' var dataBuf: TWSABuf - dataBuf.buf = buf + dataBuf.buf = cast[cstring](buf) dataBuf.len = size.ULONG var bytesReceived: Dword @@ -753,10 +753,7 @@ when defined(windows) or defined(nimdoc): proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = if not retFuture.finished: if errcode == OSErrorCode(-1): - if bytesCount == 0 and dataBuf.buf[0] == '\0': - retFuture.complete(0) - else: - retFuture.complete(bytesCount) + retFuture.complete(bytesCount) else: if flags.isDisconnectionError(errcode): retFuture.complete(0) @@ -788,6 +785,51 @@ when defined(windows) or defined(nimdoc): retFuture.complete(bytesReceived) return retFuture + proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + flags = {SocketFlag.SafeDisconn}): Future[void] = + ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all + ## data has been sent. + ## **WARNING**: Use it with caution. If ``buf`` refers to GC'ed object, you must use GC_ref/GC_unref calls + ## to avoid early freeing of the buffer + verifyPresence(socket) + var retFuture = newFuture[void]("send") + + var dataBuf: TWSABuf + dataBuf.buf = cast[cstring](buf) + dataBuf.len = size.ULONG + + var bytesReceived, lowFlags: Dword + var ol = PCustomOverlapped() + GC_ref(ol) + ol.data = CompletionData(fd: socket, cb: + proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = + if not retFuture.finished: + if errcode == OSErrorCode(-1): + retFuture.complete() + else: + if flags.isDisconnectionError(errcode): + retFuture.complete() + else: + retFuture.fail(newException(OSError, osErrorMsg(errcode))) + ) + + let ret = WSASend(socket.SocketHandle, addr dataBuf, 1, addr bytesReceived, + lowFlags, cast[POVERLAPPED](ol), nil) + if ret == -1: + let err = osLastError() + if err.int32 != ERROR_IO_PENDING: + GC_unref(ol) + if flags.isDisconnectionError(err): + retFuture.complete() + else: + retFuture.fail(newException(OSError, osErrorMsg(err))) + else: + retFuture.complete() + # We don't deallocate ``ol`` here because even though this completed + # immediately poll will still be notified about its completion and it will + # free ``ol``. + return retFuture + proc send*(socket: AsyncFD, data: string, flags = {SocketFlag.SafeDisconn}): Future[void] = ## Sends ``data`` to ``socket``. The returned future will complete once all @@ -797,9 +839,9 @@ when defined(windows) or defined(nimdoc): var dataBuf: TWSABuf dataBuf.buf = data - dataBuf.len = data.len.ULONG GC_ref(data) # we need to protect data until send operation is completed # or failed. + dataBuf.len = data.len.ULONG var bytesReceived, lowFlags: Dword var ol = PCustomOverlapped() @@ -1528,9 +1570,9 @@ else: addRead(socket, cb) return retFuture - proc recvInto*(socket: AsyncFD, buf: cstring, size: int, + proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = - var retFuture = newFuture[int]("recvInto") + var retFuture = newFuture[int]("recvBuffer") proc cb(sock: AsyncFD): bool = result = true @@ -1552,6 +1594,38 @@ else: addRead(socket, cb) return retFuture + proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + flags = {SocketFlag.SafeDisconn}): Future[void] = + var retFuture = newFuture[void]("send") + + var written = 0 + + proc cb(sock: AsyncFD): bool = + result = true + let netSize = size-written + var d = cast[cstring](buf) + let res = send(sock.SocketHandle, addr d[written], netSize.cint, + MSG_NOSIGNAL) + if res < 0: + let lastError = osLastError() + if lastError.int32 notin {EINTR, EWOULDBLOCK, EAGAIN}: + if flags.isDisconnectionError(lastError): + retFuture.complete() + else: + retFuture.fail(newException(OSError, osErrorMsg(lastError))) + else: + result = false # We still want this callback to be called. + else: + written.inc(res) + if res != netSize: + result = false # We still have data to send. + else: + retFuture.complete() + # TODO: The following causes crashes. + #if not cb(socket): + addWrite(socket, cb) + return retFuture + proc send*(socket: AsyncFD, data: string, flags = {SocketFlag.SafeDisconn}): Future[void] = var retFuture = newFuture[void]("send") From 436a5a01ab9c2baa13e68d87de26e3e7ecc125aa Mon Sep 17 00:00:00 2001 From: Anatoly Galiulin Date: Wed, 31 Aug 2016 12:05:47 +0700 Subject: [PATCH 105/292] Fix typo --- lib/pure/asyncnet.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index d92100831..e568ffc98 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -326,7 +326,7 @@ proc sendBuffer*(socket: AsyncSocket, buf: pointer, size: int, if socket.isSsl: when defineSsl: sslLoop(socket, flags, - sslWrite(socket.sslHandle, cast[pointer](buf), size.cint)) + sslWrite(socket.sslHandle, cast[cstring](buf), size.cint)) await sendPendingSslData(socket, flags) else: await sendBuffer(socket.fd.AsyncFD, buf, size, flags) From 862d6ad2346b08fef0e28fbcf289edcad5461af4 Mon Sep 17 00:00:00 2001 From: Anatoly Galiulin Date: Wed, 31 Aug 2016 14:18:39 +0700 Subject: [PATCH 106/292] Restore ``recvInto`` for backwards compatibility --- lib/pure/asyncdispatch.nim | 12 ++++++++++++ lib/upcoming/asyncdispatch.nim | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index faac79d3b..49926b019 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -816,6 +816,18 @@ when defined(windows) or defined(nimdoc): retFuture.complete(bytesReceived) return retFuture + proc recvInto*(socket: AsyncFD, buf: cstring, size: int, + flags = {SocketFlag.SafeDisconn}): Future[int] = + ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must + ## at least be of that size. Returned future will complete once all the + ## data requested is read, a part of the data has been read, or the socket + ## has disconnected in which case the future will complete with a value of + ## ``0``. + ## + ## **Warning**: The ``Peek`` socket flag is not supported on Windows. + + socket.recvBuffer(buf, size, flags) + proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[void] = ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index 1f66ef6c8..96392c417 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -785,6 +785,18 @@ when defined(windows) or defined(nimdoc): retFuture.complete(bytesReceived) return retFuture + proc recvInto*(socket: AsyncFD, buf: cstring, size: int, + flags = {SocketFlag.SafeDisconn}): Future[int] = + ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must + ## at least be of that size. Returned future will complete once all the + ## data requested is read, a part of the data has been read, or the socket + ## has disconnected in which case the future will complete with a value of + ## ``0``. + ## + ## **Warning**: The ``Peek`` socket flag is not supported on Windows. + + socket.recvBuffer(buf, size, flags) + proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[void] = ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all From 60dbfb2ec90d8ad080ae1b202fcc086cb2cf911c Mon Sep 17 00:00:00 2001 From: Anatoly Galiulin Date: Tue, 6 Sep 2016 09:29:41 +0700 Subject: [PATCH 107/292] Revert function names scheme due to the @dom96 comment --- lib/pure/asyncdispatch.nim | 24 ++++++------------------ lib/pure/asyncnet.nim | 8 ++++---- lib/upcoming/asyncdispatch.nim | 24 ++++++------------------ 3 files changed, 16 insertions(+), 40 deletions(-) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index 49926b019..e8b29b26e 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -749,7 +749,7 @@ when defined(windows) or defined(nimdoc): retFuture.complete("") return retFuture - proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc recvInto*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must ## at least be of that size. Returned future will complete once all the @@ -769,7 +769,7 @@ when defined(windows) or defined(nimdoc): verifyPresence(socket) assert SocketFlag.Peek notin flags, "Peek not supported on Windows." - var retFuture = newFuture[int]("recvBuffer") + var retFuture = newFuture[int]("recvInto") #buf[] = '\0' var dataBuf: TWSABuf @@ -816,19 +816,7 @@ when defined(windows) or defined(nimdoc): retFuture.complete(bytesReceived) return retFuture - proc recvInto*(socket: AsyncFD, buf: cstring, size: int, - flags = {SocketFlag.SafeDisconn}): Future[int] = - ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must - ## at least be of that size. Returned future will complete once all the - ## data requested is read, a part of the data has been read, or the socket - ## has disconnected in which case the future will complete with a value of - ## ``0``. - ## - ## **Warning**: The ``Peek`` socket flag is not supported on Windows. - - socket.recvBuffer(buf, size, flags) - - proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc send*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[void] = ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all ## data has been sent. @@ -1457,9 +1445,9 @@ else: addRead(socket, cb) return retFuture - proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc recvInto*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = - var retFuture = newFuture[int]("recvBuffer") + var retFuture = newFuture[int]("recvInto") proc cb(sock: AsyncFD): bool = result = true @@ -1481,7 +1469,7 @@ else: addRead(socket, cb) return retFuture - proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc send*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[void] = var retFuture = newFuture[void]("send") diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index e568ffc98..c7691f45c 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -205,7 +205,7 @@ template readInto(buf: pointer, size: int, socket: AsyncSocket, sslRead(socket.sslHandle, cast[cstring](buf), size.cint)) res = opResult else: - var recvIntoFut = recvBuffer(socket.fd.AsyncFD, buf, size, flags) + var recvIntoFut = asyncdispatch.recvInto(socket.fd.AsyncFD, buf, size, flags) yield recvIntoFut # Not in SSL mode. res = recvIntoFut.read() @@ -218,7 +218,7 @@ template readIntoBuf(socket: AsyncSocket, socket.bufLen = size size -proc recvBuffer*(socket: AsyncSocket, buf: pointer, size: int, +proc recvInto*(socket: AsyncSocket, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] {.async.} = ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``. ## @@ -318,7 +318,7 @@ proc recv*(socket: AsyncSocket, size: int, let read = readInto(addr result[0], size, socket, flags) result.setLen(read) -proc sendBuffer*(socket: AsyncSocket, buf: pointer, size: int, +proc send*(socket: AsyncSocket, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}) {.async.} = ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all ## data has been sent. @@ -329,7 +329,7 @@ proc sendBuffer*(socket: AsyncSocket, buf: pointer, size: int, sslWrite(socket.sslHandle, cast[cstring](buf), size.cint)) await sendPendingSslData(socket, flags) else: - await sendBuffer(socket.fd.AsyncFD, buf, size, flags) + await send(socket.fd.AsyncFD, buf, size, flags) proc send*(socket: AsyncSocket, data: string, flags = {SocketFlag.SafeDisconn}) {.async.} = diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index 96392c417..dc7a72a48 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -718,7 +718,7 @@ when defined(windows) or defined(nimdoc): retFuture.complete("") return retFuture - proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc recvInto*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must ## at least be of that size. Returned future will complete once all the @@ -738,7 +738,7 @@ when defined(windows) or defined(nimdoc): verifyPresence(socket) assert SocketFlag.Peek notin flags, "Peek not supported on Windows." - var retFuture = newFuture[int]("recvBuffer") + var retFuture = newFuture[int]("recvInto") #buf[] = '\0' var dataBuf: TWSABuf @@ -785,19 +785,7 @@ when defined(windows) or defined(nimdoc): retFuture.complete(bytesReceived) return retFuture - proc recvInto*(socket: AsyncFD, buf: cstring, size: int, - flags = {SocketFlag.SafeDisconn}): Future[int] = - ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must - ## at least be of that size. Returned future will complete once all the - ## data requested is read, a part of the data has been read, or the socket - ## has disconnected in which case the future will complete with a value of - ## ``0``. - ## - ## **Warning**: The ``Peek`` socket flag is not supported on Windows. - - socket.recvBuffer(buf, size, flags) - - proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc send*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[void] = ## Sends ``size`` bytes from ``buf`` to ``socket``. The returned future will complete once all ## data has been sent. @@ -1582,9 +1570,9 @@ else: addRead(socket, cb) return retFuture - proc recvBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc recvInto*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[int] = - var retFuture = newFuture[int]("recvBuffer") + var retFuture = newFuture[int]("recvInto") proc cb(sock: AsyncFD): bool = result = true @@ -1606,7 +1594,7 @@ else: addRead(socket, cb) return retFuture - proc sendBuffer*(socket: AsyncFD, buf: pointer, size: int, + proc send*(socket: AsyncFD, buf: pointer, size: int, flags = {SocketFlag.SafeDisconn}): Future[void] = var retFuture = newFuture[void]("send") From ec7aec3d58e39e59454cb7a59cb499e1e86b7fa1 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Tue, 6 Sep 2016 12:29:53 +0300 Subject: [PATCH 108/292] Fix windows issues. Fix semantic of AsyncEvent close/unregister #4694. Fix #4697. Added first test. --- lib/upcoming/asyncdispatch.nim | 59 ++++++++------- tests/async/tupcoming_async.nim | 125 ++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+), 25 deletions(-) create mode 100644 tests/async/tupcoming_async.nim diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index ce44e8a6a..72ba4efd6 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -1163,7 +1163,7 @@ when defined(windows) or defined(nimdoc): ## receiving notifies. registerWaitableEvent(FD_WRITE or FD_CONNECT or FD_CLOSE) - template registerWaitableHandle(p, hEvent, flags, pcd, handleCallback) = + template registerWaitableHandle(p, hEvent, flags, pcd, timeout, handleCallback) = let handleFD = AsyncFD(hEvent) pcd.ioPort = p.ioPort pcd.handleFd = handleFD @@ -1177,10 +1177,10 @@ when defined(windows) or defined(nimdoc): pcd.ovl = ol if not registerWaitForSingleObject(addr(pcd.waitFd), hEvent, cast[WAITORTIMERCALLBACK](waitableCallback), - cast[pointer](pcd), INFINITE, flags): + cast[pointer](pcd), timeout.Dword, flags): GC_unref(ol) deallocShared(cast[pointer](pcd)) - discard wsaCloseEvent(hEvent) + discard closeHandle(hEvent) raiseOSError(osLastError()) p.handles.incl(handleFD) @@ -1212,7 +1212,7 @@ when defined(windows) or defined(nimdoc): deallocShared(cast[pointer](pcd)) p.handles.excl(fd) - registerWaitableHandle(p, hEvent, flags, pcd, timercb) + registerWaitableHandle(p, hEvent, flags, pcd, timeout, timercb) proc addProcess*(pid: int, cb: Callback) = ## Registers callback ``cb`` to be called when process with pid ``pid`` @@ -1236,10 +1236,12 @@ when defined(windows) or defined(nimdoc): p.handles.excl(fd) discard cb(fd) - registerWaitableHandle(p, hProcess, flags, pcd, proccb) + registerWaitableHandle(p, hProcess, flags, pcd, INFINITE, proccb) proc newAsyncEvent*(): AsyncEvent = ## Creates new ``AsyncEvent`` object. + ## New ``AsyncEvent`` object is not automatically registered with + ## dispatcher like ``AsyncSocket``. var sa = SECURITY_ATTRIBUTES( nLength: sizeof(SECURITY_ATTRIBUTES).cint, bInheritHandle: 1 @@ -1248,14 +1250,15 @@ when defined(windows) or defined(nimdoc): if event == INVALID_HANDLE_VALUE: raiseOSError(osLastError()) result = cast[AsyncEvent](allocShared0(sizeof(AsyncEventImpl))) + result.hEvent = event proc setEvent*(ev: AsyncEvent) = ## Set event ``ev`` to signaled state. if setEvent(ev.hEvent) == 0: raiseOSError(osLastError()) - proc close*(ev: AsyncEvent) = - ## Closes event ``ev``. + proc unregister*(ev: AsyncEvent) = + ## Unregisters event ``ev``. if ev.hWaiter != 0: let p = getGlobalDispatcher() if unregisterWait(ev.hWaiter) == 0: @@ -1263,7 +1266,12 @@ when defined(windows) or defined(nimdoc): if err.int32 != ERROR_IO_PENDING: raiseOSError(osLastError()) p.handles.excl(AsyncFD(ev.hEvent)) + ev.hWaiter = 0 + else: + raise newException(ValueError, "Event is not registered!") + proc close*(ev: AsyncEvent) = + ## Closes event ``ev``. if closeHandle(ev.hEvent) == 0: raiseOSError(osLastError()) deallocShared(cast[pointer](ev)) @@ -1281,15 +1289,12 @@ when defined(windows) or defined(nimdoc): proc eventcb(fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = if cb(fd): - if unregisterWait(pcd.waitFd) == 0: - let err = osLastError() - if err.int32 != ERROR_IO_PENDING: - raiseOSError(osLastError()) - ev.hWaiter = 0 + # we need this check to avoid exception, if `unregister(event)` was + # called in callback. + if ev.hWaiter != 0: unregister(ev) deallocShared(cast[pointer](pcd)) - p.handles.excl(fd) - registerWaitableHandle(p, hEvent, flags, pcd, eventcb) + registerWaitableHandle(p, hEvent, flags, pcd, INFINITE, eventcb) ev.hWaiter = pcd.waitFd initAll() @@ -1319,7 +1324,7 @@ else: readCB: Callback writeCB: Callback - AsyncEvent* = SelectEvent + AsyncEvent* = distinct SelectEvent PDispatcher* = ref object of PDispatcherBase selector: Selector[AsyncData] @@ -1368,8 +1373,8 @@ else: proc unregister*(fd: AsyncFD) = getGlobalDispatcher().selector.unregister(fd.SocketHandle) - # proc unregister*(ev: AsyncEvent) = - # getGlobalDispatcher().selector.unregister(SelectEvent(ev)) + proc unregister*(ev: AsyncEvent) = + getGlobalDispatcher().selector.unregister(SelectEvent(ev)) proc addRead*(fd: AsyncFD, cb: Callback) = let p = getGlobalDispatcher() @@ -1409,7 +1414,7 @@ else: var count = p.selector.selectInto(p.adjustedTimeout(timeout), keys) var i = 0 while i < count: - var update = false + var custom = false var fd = keys[i].fd.SocketHandle let events = keys[i].events @@ -1420,7 +1425,6 @@ else: p.selector.withData(fd, adata) do: if adata.readCB == cb: adata.readCB = nil - update = true if Event.Write in events: let cb = keys[i].data.writeCB @@ -1429,24 +1433,29 @@ else: p.selector.withData(fd, adata) do: if adata.writeCB == cb: adata.writeCB = nil - update = true when supportedPlatform: if (customSet * events) != {}: let cb = keys[i].data.readCB doAssert(cb != nil) + custom = true if cb(fd.AsyncFD): p.selector.withData(fd, adata) do: if adata.readCB == cb: adata.readCB = nil p.selector.unregister(fd) - if update: + # because state `data` can be modified in callback we need to update + # descriptor events with currently registered callbacks. + if not custom: + var update = false var newEvents: set[Event] = {} p.selector.withData(fd, adata) do: if adata.readCB != nil: incl(newEvents, Event.Read) if adata.writeCB != nil: incl(newEvents, Event.Write) - p.selector.updateHandle(fd, newEvents) + update = true + if update: + p.selector.updateHandle(fd, newEvents) inc(i) # Timer processing. @@ -1693,15 +1702,15 @@ else: proc newAsyncEvent*(): AsyncEvent = ## Creates new ``AsyncEvent``. - result = AsyncEvent(ioselectors.newSelectEvent()) + result = AsyncEvent(newSelectEvent()) proc setEvent*(ev: AsyncEvent) = ## Sets new ``AsyncEvent`` to signaled state. - ioselectors.setEvent(SelectEvent(ev)) + setEvent(SelectEvent(ev)) proc close*(ev: AsyncEvent) = ## Closes ``AsyncEvent`` - ioselectors.close(SelectEvent(ev)) + close(SelectEvent(ev)) proc addEvent*(ev: AsyncEvent, cb: Callback) = ## Start watching for event ``ev``, and call callback ``cb``, when diff --git a/tests/async/tupcoming_async.nim b/tests/async/tupcoming_async.nim new file mode 100644 index 000000000..e8bdcfdcb --- /dev/null +++ b/tests/async/tupcoming_async.nim @@ -0,0 +1,125 @@ +discard """ + output: ''' +OK +OK +OK +OK +''' +""" + +when defined(upcoming): + import asyncdispatch, times, osproc, streams + + const supportedPlatform = defined(linux) or defined(freebsd) or + defined(netbsd) or defined(openbsd) or + defined(macosx) + + proc waitEvent(ev: AsyncEvent, closeEvent = false): Future[void] = + var retFuture = newFuture[void]("waitEvent") + proc cb(fd: AsyncFD): bool = + retFuture.complete() + if closeEvent: + return true + else: + return false + addEvent(ev, cb) + return retFuture + + proc waitTimer(timeout: int): Future[void] = + var retFuture = newFuture[void]("waitTimer") + proc cb(fd: AsyncFD): bool = + retFuture.complete() + addTimer(timeout, true, cb) + return retFuture + + proc waitProcess(p: Process): Future[void] = + var retFuture = newFuture[void]("waitProcess") + proc cb(fd: AsyncFD): bool = + retFuture.complete() + addProcess(p.processID(), cb) + return retFuture + + proc delayedSet(ev: AsyncEvent, timeout: int): Future[void] {.async.} = + await waitTimer(timeout) + ev.setEvent() + + proc timerTest() = + var timeout = 200 + var errorRate = 10.0 + var start = epochTime() + waitFor(waitTimer(200)) + var finish = epochTime() + var lowlimit = float(timeout) - float(timeout) * errorRate / 100.0 + var highlimit = float(timeout) + float(timeout) * errorRate / 100.0 + var elapsed = (finish - start) * 1_000 # convert to milliseconds + if elapsed >= lowlimit and elapsed < highlimit: + echo "OK" + else: + echo "timerTest: Timeout = " & $(elapsed) & ", but must be inside of [" & + $lowlimit & ", " & $highlimit & ")" + + proc eventTest() = + var event = newAsyncEvent() + var fut = waitEvent(event) + asyncCheck(delayedSet(event, 500)) + waitFor(fut or waitTimer(1000)) + if fut.finished: + echo "OK" + else: + echo "eventTest: Timeout expired before event received!" + + proc processTest() = + when defined(windows): + var process = startProcess("ping.exe", "", + ["127.0.0.1", "-n", "2", "-w", "100"], nil, + {poStdErrToStdOut, poUsePath, poInteractive, + poDemon}) + else: + var process = startProcess("/bin/sleep", "", ["1"], nil, + {poStdErrToStdOut, poUsePath}) + var fut = waitProcess(process) + waitFor(fut or waitTimer(2000)) + if fut.finished and process.peekExitCode() == 0: + echo "OK" + else: + echo "processTest: Timeout expired before process exited!" + + when supportedPlatform: + import posix + + proc waitSignal(signal: int): Future[void] = + var retFuture = newFuture[void]("waitSignal") + proc cb(fd: AsyncFD): bool = + retFuture.complete() + addSignal(signal, cb) + return retFuture + + proc delayedSignal(signal: int, timeout: int): Future[void] {.async.} = + await waitTimer(timeout) + var pid = posix.getpid() + discard posix.kill(pid, signal.cint) + + proc signalTest() = + var fut = waitSignal(posix.SIGINT) + asyncCheck(delayedSignal(posix.SIGINT, 500)) + waitFor(fut or waitTimer(1000)) + if fut.finished: + echo "OK" + else: + echo "signalTest: Timeout expired before signal received!" + + when supportedPlatform: + timerTest() + eventTest() + processTest() + signalTest() + elif defined(windows): + timerTest() + eventTest() + processTest() + echo "OK" + else: + eventTest() + echo "OK\nOK\nOK" +else: + echo "OK\nOK\nOK\nOK" From 87eb3a105d4a2b6f9e9fd18bc6cca18d458d1cca Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Tue, 6 Sep 2016 20:35:02 +0200 Subject: [PATCH 109/292] Some small fixes to changes introduced by #4683. --- lib/pure/asyncdispatch.nim | 108 +++++++++---------------------------- lib/pure/asyncfile.nim | 2 + lib/pure/asyncnet.nim | 2 + 3 files changed, 30 insertions(+), 82 deletions(-) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index e8b29b26e..33b600718 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -750,7 +750,7 @@ when defined(windows) or defined(nimdoc): return retFuture proc recvInto*(socket: AsyncFD, buf: pointer, size: int, - flags = {SocketFlag.SafeDisconn}): Future[int] = + flags = {SocketFlag.SafeDisconn}): Future[int] = ## Reads **up to** ``size`` bytes from ``socket`` into ``buf``, which must ## at least be of that size. Returned future will complete once all the ## data requested is read, a part of the data has been read, or the socket @@ -784,7 +784,10 @@ when defined(windows) or defined(nimdoc): proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = if not retFuture.finished: if errcode == OSErrorCode(-1): - retFuture.complete(bytesCount) + if bytesCount == 0 and dataBuf.buf[0] == '\0': + retFuture.complete(0) + else: + retFuture.complete(bytesCount) else: if flags.isDisconnectionError(errcode): retFuture.complete(0) @@ -861,54 +864,6 @@ when defined(windows) or defined(nimdoc): # free ``ol``. return retFuture - proc send*(socket: AsyncFD, data: string, - flags = {SocketFlag.SafeDisconn}): Future[void] = - ## Sends ``data`` to ``socket``. The returned future will complete once all - ## data has been sent. - verifyPresence(socket) - var retFuture = newFuture[void]("send") - - var dataBuf: TWSABuf - dataBuf.buf = data - GC_ref(data) # we need to protect data until send operation is completed - # or failed. - dataBuf.len = data.len.ULONG - - var bytesReceived, lowFlags: Dword - var ol = PCustomOverlapped() - GC_ref(ol) - ol.data = CompletionData(fd: socket, cb: - proc (fd: AsyncFD, bytesCount: Dword, errcode: OSErrorCode) = - GC_unref(data) # if operation completed `data` must be released. - if not retFuture.finished: - if errcode == OSErrorCode(-1): - retFuture.complete() - else: - if flags.isDisconnectionError(errcode): - retFuture.complete() - else: - retFuture.fail(newException(OSError, osErrorMsg(errcode))) - ) - - let ret = WSASend(socket.SocketHandle, addr dataBuf, 1, addr bytesReceived, - lowFlags, cast[POVERLAPPED](ol), nil) - if ret == -1: - let err = osLastError() - if err.int32 != ERROR_IO_PENDING: - GC_unref(ol) - GC_unref(data) # if operation failed `data` must be released, because - # completion routine will not be called. - if flags.isDisconnectionError(err): - retFuture.complete() - else: - retFuture.fail(newException(OSError, osErrorMsg(err))) - else: - retFuture.complete() - # We don't deallocate ``ol`` here because even though this completed - # immediately poll will still be notified about its completion and it will - # free ``ol``. - return retFuture - proc sendTo*(socket: AsyncFD, data: pointer, size: int, saddr: ptr SockAddr, saddrLen: Socklen, flags = {SocketFlag.SafeDisconn}): Future[void] = @@ -1501,38 +1456,6 @@ else: addWrite(socket, cb) return retFuture - proc send*(socket: AsyncFD, data: string, - flags = {SocketFlag.SafeDisconn}): Future[void] = - var retFuture = newFuture[void]("send") - - var written = 0 - - proc cb(sock: AsyncFD): bool = - result = true - let netSize = data.len-written - var d = data.cstring - let res = send(sock.SocketHandle, addr d[written], netSize.cint, - MSG_NOSIGNAL) - if res < 0: - let lastError = osLastError() - if lastError.int32 notin {EINTR, EWOULDBLOCK, EAGAIN}: - if flags.isDisconnectionError(lastError): - retFuture.complete() - else: - retFuture.fail(newException(OSError, osErrorMsg(lastError))) - else: - result = false # We still want this callback to be called. - else: - written.inc(res) - if res != netSize: - result = false # We still have data to send. - else: - retFuture.complete() - # TODO: The following causes crashes. - #if not cb(socket): - addWrite(socket, cb) - return retFuture - proc sendTo*(socket: AsyncFD, data: pointer, size: int, saddr: ptr SockAddr, saddrLen: SockLen, flags = {SocketFlag.SafeDisconn}): Future[void] = @@ -1655,6 +1578,27 @@ proc accept*(socket: AsyncFD, retFut.complete(future.read.client) return retFut +proc send*(socket: AsyncFD, data: string, + flags = {SocketFlag.SafeDisconn}): Future[void] = + ## Sends ``data`` to ``socket``. The returned future will complete once all + ## data has been sent. + var retFuture = newFuture[void]("send") + + var copiedData = data + GC_ref(copiedData) # we need to protect data until send operation is completed + # or failed. + + let sendFut = socket.send(addr copiedData[0], data.len, flags) + sendFut.cb = + proc () = + GC_unref(copiedData) + if sendFut.failed: + retFuture.fail(sendFut.error) + else: + retFuture.complete() + + return retFuture + # -- Await Macro include asyncmacro diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim index 8801c64d0..ffe6a391e 100644 --- a/lib/pure/asyncfile.nim +++ b/lib/pure/asyncfile.nim @@ -24,6 +24,8 @@ import asyncdispatch, os +# TODO: Fix duplication introduced by PR #4683. + when defined(windows) or defined(nimdoc): import winlean else: diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index c7691f45c..dbf895d18 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -62,6 +62,8 @@ import os export SOBool +# TODO: Remove duplication introduced by PR #4683. + const defineSsl = defined(ssl) or defined(nimdoc) when defineSsl: From 08a6f3fc67f1bac78c47a241c94f936d7fbd5108 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Wed, 7 Sep 2016 08:29:37 +0200 Subject: [PATCH 110/292] fixes #4721 --- compiler/ccgstmts.nim | 24 +++++++++++++++++++----- compiler/cgen.nim | 5 +++-- tests/ccgbugs/tescaping_temps.nim | 11 +++++++++++ todo.txt | 1 - 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index 294235ae9..10b5641c5 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -293,6 +293,8 @@ proc genIf(p: BProc, n: PNode, d: var TLoc) = genLineDir(p, n) let lend = getLabel(p) for i in countup(0, sonsLen(n) - 1): + # bug #4230: avoid false sharing between branches: + if d.k == locTemp and isEmptyType(n.typ): d.k = locNone let it = n.sons[i] if it.len == 2: when newScopeForIf: startBlock(p) @@ -488,16 +490,20 @@ proc genWhileStmt(p: BProc, t: PNode) = dec(p.withinLoop) -proc genBlock(p: BProc, t: PNode, d: var TLoc) = +proc genBlock(p: BProc, n: PNode, d: var TLoc) = + # bug #4505: allocate the temp in the outer scope + # so that it can escape the generated {}: + if not isEmptyType(n.typ) and d.k == locNone: + getTemp(p, n.typ, d) preserveBreakIdx: p.breakIdx = startBlock(p) - if t.sons[0].kind != nkEmpty: + if n.sons[0].kind != nkEmpty: # named block? - assert(t.sons[0].kind == nkSym) - var sym = t.sons[0].sym + assert(n.sons[0].kind == nkSym) + var sym = n.sons[0].sym sym.loc.k = locOther sym.position = p.breakIdx+1 - expr(p, t.sons[1], d) + expr(p, n.sons[1], d) endBlock(p) proc genParForStmt(p: BProc, t: PNode) = @@ -592,6 +598,8 @@ proc genCaseSecondPass(p: BProc, t: PNode, d: var TLoc, labId, until: int): TLabel = var lend = getLabel(p) for i in 1..until: + # bug #4230: avoid false sharing between branches: + if d.k == locTemp and isEmptyType(t.typ): d.k = locNone lineF(p, cpsStmts, "LA$1: ;$n", [rope(labId + i)]) if t.sons[i].kind == nkOfBranch: var length = sonsLen(t.sons[i]) @@ -727,6 +735,8 @@ proc genOrdinalCase(p: BProc, n: PNode, d: var TLoc) = lineF(p, cpsStmts, "switch ($1) {$n", [rdCharLoc(a)]) var hasDefault = false for i in splitPoint+1 .. < n.len: + # bug #4230: avoid false sharing between branches: + if d.k == locTemp and isEmptyType(n.typ): d.k = locNone var branch = n[i] if branch.kind == nkOfBranch: genCaseRange(p, branch) @@ -797,6 +807,8 @@ proc genTryCpp(p: BProc, t: PNode, d: var TLoc) = var i = 1 var catchAllPresent = false while (i < length) and (t.sons[i].kind == nkExceptBranch): + # bug #4230: avoid false sharing between branches: + if d.k == locTemp and isEmptyType(t.typ): d.k = locNone let blen = sonsLen(t.sons[i]) if i > 1: addf(p.s(cpsStmts), "else ", []) if blen == 1: @@ -902,6 +914,8 @@ proc genTry(p: BProc, t: PNode, d: var TLoc) = inc p.inExceptBlock var i = 1 while (i < length) and (t.sons[i].kind == nkExceptBranch): + # bug #4230: avoid false sharing between branches: + if d.k == locTemp and isEmptyType(t.typ): d.k = locNone var blen = sonsLen(t.sons[i]) if blen == 1: # general except section: diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 7333c77c3..48b6e9633 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -323,8 +323,9 @@ proc initLocalVar(p: BProc, v: PSym, immediateAsgn: bool) = proc getTemp(p: BProc, t: PType, result: var TLoc; needsInit=false) = inc(p.labels) result.r = "LOC" & rope(p.labels) - addf(p.blocks[0].sections[cpsLocals], - "$1 $2;$n", [getTypeDesc(p.module, t), result.r]) + #addf(p.blocks[0].sections[cpsLocals], + # "$1 $2;$n", [getTypeDesc(p.module, t), result.r]) + linefmt(p, cpsLocals, "$1 $2;$n", getTypeDesc(p.module, t), result.r) result.k = locTemp #result.a = - 1 result.t = t diff --git a/tests/ccgbugs/tescaping_temps.nim b/tests/ccgbugs/tescaping_temps.nim index ef078913b..ea09261ea 100644 --- a/tests/ccgbugs/tescaping_temps.nim +++ b/tests/ccgbugs/tescaping_temps.nim @@ -18,3 +18,14 @@ test proc() = test proc() = discard else: test proc() = discard + +# ensure 'case' does not trigger the same bug: +test proc() = + let f = 15 + case f + of 10: + test proc() = discard + of 3: + test proc() = discard + else: + test proc() = discard diff --git a/todo.txt b/todo.txt index 106f2bb34..21bec6e27 100644 --- a/todo.txt +++ b/todo.txt @@ -53,7 +53,6 @@ Bugs - VM: ptr/ref T cannot work in general - blocks can "export" an identifier but the CCG generates {} for them ... - ConcreteTypes in a 'case' means we don't check for duplicated case branches -- BUG: echo with template `$`*(info: TLineInfo): expr = toFileLineCol(info) GC From 7788b5a043a54e74957c887b55825c43c7a7c16c Mon Sep 17 00:00:00 2001 From: cheatfate Date: Wed, 7 Sep 2016 10:33:08 +0300 Subject: [PATCH 111/292] Borrow SelectEvent `==`. --- lib/upcoming/asyncdispatch.nim | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim index 52e7ed552..689d0272c 100644 --- a/lib/upcoming/asyncdispatch.nim +++ b/lib/upcoming/asyncdispatch.nim @@ -1373,6 +1373,7 @@ else: {.deprecated: [TAsyncFD: AsyncFD, TCallback: Callback].} proc `==`*(x, y: AsyncFD): bool {.borrow.} + proc `==`*(x, y: AsyncEvent): bool {.borrow.} proc newDispatcher*(): PDispatcher = new result From 1350d5312b248128582db6d2ebde8d7ce5349e48 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Wed, 7 Sep 2016 12:19:06 +0300 Subject: [PATCH 112/292] Removed tests with `asyncio`. Fix ssl connection drop in asyncnet Add tasyncssl test --- lib/pure/asyncnet.nim | 11 +++-- tests/async/tasyncdiscard.nim | 2 +- tests/async/tasynciossl.nim | 92 ----------------------------------- tests/async/tasyncssl.nim | 66 +++++++++++++++++++++++++ tests/async/tasyncudp.nim | 78 ----------------------------- 5 files changed, 75 insertions(+), 174 deletions(-) delete mode 100644 tests/async/tasynciossl.nim create mode 100644 tests/async/tasyncssl.nim delete mode 100644 tests/async/tasyncudp.nim diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index dbf895d18..334f95baa 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -165,9 +165,14 @@ when defineSsl: await sendPendingSslData(socket, flags) of SSL_ERROR_WANT_READ: var data = await recv(socket.fd.AsyncFD, BufferSize, flags) - let ret = bioWrite(socket.bioIn, addr data[0], data.len.cint) - if ret < 0: - raiseSSLError() + let length = len(data) + if length > 0: + let ret = bioWrite(socket.bioIn, addr data[0], data.len.cint) + if ret < 0: + raiseSSLError() + elif length == 0: + # connection not properly closed by remote side or connection dropped + SSL_set_shutdown(socket.sslHandle, SSL_RECEIVED_SHUTDOWN) else: raiseSSLError("Cannot appease SSL.") diff --git a/tests/async/tasyncdiscard.nim b/tests/async/tasyncdiscard.nim index e7c87ad42..64e6021c3 100644 --- a/tests/async/tasyncdiscard.nim +++ b/tests/async/tasyncdiscard.nim @@ -10,7 +10,7 @@ discard """ 6 ''' """ -import asyncio, asyncdispatch, asyncnet +import asyncdispatch, asyncnet proc main {.async.} = proc f: Future[int] {.async.} = diff --git a/tests/async/tasynciossl.nim b/tests/async/tasynciossl.nim deleted file mode 100644 index ba856760e..000000000 --- a/tests/async/tasynciossl.nim +++ /dev/null @@ -1,92 +0,0 @@ -discard """ - file: "tasynciossl.nim" - cmd: "nim $target --hints:on --define:ssl $options $file" - output: "20000" -""" -import sockets, asyncio, strutils, times - -var disp {.threadvar.}: PDispatcher -disp = newDispatcher() -var msgCount = 0 - -when defined(ssl): - var ctx = newContext(verifyMode = CVerifyNone, - certFile = "tests/testdata/mycert.pem", keyFile = "tests/testdata/mycert.pem") - - var ctx1 = newContext(verifyMode = CVerifyNone) - -const - swarmSize = 50 - messagesToSend = 100 - -proc swarmConnect(s: PAsyncSocket) = - #echo("Connected") - for i in 1..messagesToSend: - s.send("Message " & $i & "\c\L") - s.close() - -proc serverRead(s: PAsyncSocket) = - var line = "" - assert s.readLine(line) - if line != "": - #echo(line) - if line.startsWith("Message "): - msgCount.inc() - else: - assert(false) - else: - s.close() - -proc serverAccept(s: PAsyncSocket) = - var client: PAsyncSocket - new(client) - s.accept(client) - client.handleRead = serverRead - disp.register(client) - -proc launchSwarm(disp: var PDispatcher, port: TPort, count: int, - buffered = true, useSSL = false) = - for i in 1..count: - var client = asyncSocket() - when defined(ssl): - if useSSL: - ctx1.wrapSocket(client) - client.handleConnect = swarmConnect - disp.register(client) - client.connect("localhost", port) - -proc createSwarm(port: TPort, buffered = true, useSSL = false) = - var server = asyncSocket() - when defined(ssl): - if useSSL: - ctx.wrapSocket(server) - server.handleAccept = serverAccept - disp.register(server) - server.bindAddr(port) - server.listen() - disp.launchSwarm(port, swarmSize, buffered, useSSL) - -when defined(ssl): - const serverCount = 4 -else: - const serverCount = 2 - -createSwarm(TPort(10235)) -createSwarm(TPort(10236), false) - -when defined(ssl): - createSwarm(TPort(10237), true, true) - createSwarm(TPort(10238), false, true) - -var startTime = epochTime() -while true: - if epochTime() - startTime >= 300.0: - break - if not disp.poll(): break - if disp.len == serverCount: - # Only the servers are left in the dispatcher. All clients finished, - # we need to therefore break. - break - -assert msgCount == (swarmSize * messagesToSend) * serverCount -echo(msgCount) diff --git a/tests/async/tasyncssl.nim b/tests/async/tasyncssl.nim new file mode 100644 index 000000000..7651d9abe --- /dev/null +++ b/tests/async/tasyncssl.nim @@ -0,0 +1,66 @@ +discard """ + file: "tasyncssl.nim" + cmd: "nim $target --hints:on --define:ssl $options $file" + output: "500" +""" +import asyncdispatch, asyncnet, net, strutils, os + +when defined(ssl): + var msgCount = 0 + + const + swarmSize = 10 + messagesToSend = 50 + + var clientCount = 0 + + proc sendMessages(client: AsyncSocket) {.async.} = + for i in 0 .. = 300.0: - break - - if not disp.poll(): - break - - if (msgCount div messagesToSend) * serverCount == currentClient: - createClient(disp, TPort(10335), false) - createClient(disp, TPort(10336), true) - - if msgCount == messagesToSend * serverCount * swarmSize: - break - -assert msgCount == messagesToSend * serverCount * swarmSize -echo(msgCount) From cc2a8409e170cb96a3141c9ad8a9077c0c98174f Mon Sep 17 00:00:00 2001 From: cheatfate Date: Wed, 7 Sep 2016 12:51:18 +0300 Subject: [PATCH 113/292] update path to SSL certificates --- tests/async/tasyncssl.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/async/tasyncssl.nim b/tests/async/tasyncssl.nim index 7651d9abe..3dc131036 100644 --- a/tests/async/tasyncssl.nim +++ b/tests/async/tasyncssl.nim @@ -42,8 +42,8 @@ when defined(ssl): proc createServer(port: Port) {.async.} = let serverContext = newContext(verifyMode = CVerifyNone, - certFile = "../testdata/mycert.pem", - keyFile = "../testdata/mycert.pem") + certFile = "tests/testdata/mycert.pem", + keyFile = "tests/testdata/mycert.pem") var server = newAsyncSocket() serverContext.wrapSocket(server) server.setSockOpt(OptReuseAddr, true) From f0db17e2cd76bf18ff1859451157cd4a065c9037 Mon Sep 17 00:00:00 2001 From: Kier Davis Date: Wed, 7 Sep 2016 16:56:49 +0100 Subject: [PATCH 114/292] Display error message if defer statement is used at top level --- compiler/sem.nim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/sem.nim b/compiler/sem.nim index ccbd665e9..b713dbbbb 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -443,6 +443,8 @@ proc isImportSystemStmt(n: PNode): bool = else: discard proc semStmtAndGenerateGenerics(c: PContext, n: PNode): PNode = + if n.kind == nkDefer: + localError(n.info, "defer statement not supported at top level") if c.topStmts == 0 and not isImportSystemStmt(n): if sfSystemModule notin c.module.flags and n.kind notin {nkEmpty, nkCommentStmt}: From 5e48bdd63293420108dbfff1304e27eededb1993 Mon Sep 17 00:00:00 2001 From: Anatoly Galiulin Date: Thu, 8 Sep 2016 10:21:00 +0700 Subject: [PATCH 115/292] Allow to use strtabs module with js target --- lib/pure/strtabs.nim | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/pure/strtabs.nim b/lib/pure/strtabs.nim index 1c761cd92..c5d471dfa 100644 --- a/lib/pure/strtabs.nim +++ b/lib/pure/strtabs.nim @@ -13,9 +13,16 @@ ## for the string table is also provided. import - os, hashes, strutils + hashes, strutils -include "system/inclrtl" +when defined(js): + {.pragma: rtlFunc.} + {.pragma: deprecatedGetFunc.} +else: + {.pragma: deprecatedGetFunc, deprecatedGet.} + {.pragma: rtlFunc, rtl.} + import os + include "system/inclrtl" type StringTableMode* = enum ## describes the tables operation mode @@ -34,7 +41,7 @@ type {.deprecated: [TStringTableMode: StringTableMode, TStringTable: StringTableObj, PStringTable: StringTableRef].} -proc len*(t: StringTableRef): int {.rtl, extern: "nst$1".} = +proc len*(t: StringTableRef): int {.rtlFunc, extern: "nst$1".} = ## returns the number of keys in `t`. result = t.counter @@ -59,7 +66,7 @@ iterator values*(t: StringTableRef): string = type FormatFlag* = enum ## flags for the `%` operator useEnvironment, ## use environment variable if the ``$key`` - ## is not found in the table + ## is not found in the table. Does nothing when using `js` target. useEmpty, ## use the empty string as a default, thus it ## won't throw an exception if ``$key`` is not ## in the table @@ -111,7 +118,7 @@ template get(t: StringTableRef, key: string): stmt {.immediate.} = raise newException(KeyError, "key not found") proc `[]`*(t: StringTableRef, key: string): var string {. - rtl, extern: "nstTake", deprecatedGet.} = + rtlFunc, extern: "nstTake", deprecatedGetFunc.} = ## retrieves the location at ``t[key]``. If `key` is not in `t`, the ## ``KeyError`` exception is raised. One can check with ``hasKey`` whether ## the key exists. @@ -127,7 +134,7 @@ proc getOrDefault*(t: StringTableRef; key: string): string = if index >= 0: result = t.data[index].val else: result = "" -proc hasKey*(t: StringTableRef, key: string): bool {.rtl, extern: "nst$1".} = +proc hasKey*(t: StringTableRef, key: string): bool {.rtlFunc, extern: "nst$1".} = ## returns true iff `key` is in the table `t`. result = rawGet(t, key) >= 0 @@ -145,7 +152,7 @@ proc enlarge(t: StringTableRef) = if not isNil(t.data[i].key): rawInsert(t, n, t.data[i].key, t.data[i].val) swap(t.data, n) -proc `[]=`*(t: StringTableRef, key, val: string) {.rtl, extern: "nstPut".} = +proc `[]=`*(t: StringTableRef, key, val: string) {.rtlFunc, extern: "nstPut".} = ## puts a (key, value)-pair into `t`. var index = rawGet(t, key) if index >= 0: @@ -164,14 +171,17 @@ proc raiseFormatException(s: string) = proc getValue(t: StringTableRef, flags: set[FormatFlag], key: string): string = if hasKey(t, key): return t.getOrDefault(key) # hm difficult: assume safety in taint mode here. XXX This is dangerous! - if useEnvironment in flags: result = os.getEnv(key).string - else: result = "" + when defined(js): + result = "" + else: + if useEnvironment in flags: result = os.getEnv(key).string + else: result = "" if result.len == 0: if useKey in flags: result = '$' & key elif useEmpty notin flags: raiseFormatException(key) proc newStringTable*(mode: StringTableMode): StringTableRef {. - rtl, extern: "nst$1".} = + rtlFunc, extern: "nst$1".} = ## creates a new string table that is empty. new(result) result.mode = mode @@ -189,7 +199,7 @@ proc clear*(s: StringTableRef, mode: StringTableMode) = proc newStringTable*(keyValuePairs: varargs[string], mode: StringTableMode): StringTableRef {. - rtl, extern: "nst$1WithPairs".} = + rtlFunc, extern: "nst$1WithPairs".} = ## creates a new string table with given key value pairs. ## Example:: ## var mytab = newStringTable("key1", "val1", "key2", "val2", @@ -202,7 +212,7 @@ proc newStringTable*(keyValuePairs: varargs[string], proc newStringTable*(keyValuePairs: varargs[tuple[key, val: string]], mode: StringTableMode = modeCaseSensitive): StringTableRef {. - rtl, extern: "nst$1WithTableConstr".} = + rtlFunc, extern: "nst$1WithTableConstr".} = ## creates a new string table with given key value pairs. ## Example:: ## var mytab = newStringTable({"key1": "val1", "key2": "val2"}, @@ -211,7 +221,7 @@ proc newStringTable*(keyValuePairs: varargs[tuple[key, val: string]], for key, val in items(keyValuePairs): result[key] = val proc `%`*(f: string, t: StringTableRef, flags: set[FormatFlag] = {}): string {. - rtl, extern: "nstFormat".} = + rtlFunc, extern: "nstFormat".} = ## The `%` operator for string tables. const PatternChars = {'a'..'z', 'A'..'Z', '0'..'9', '_', '\x80'..'\xFF'} @@ -240,7 +250,7 @@ proc `%`*(f: string, t: StringTableRef, flags: set[FormatFlag] = {}): string {. add(result, f[i]) inc(i) -proc `$`*(t: StringTableRef): string {.rtl, extern: "nstDollar".} = +proc `$`*(t: StringTableRef): string {.rtlFunc, extern: "nstDollar".} = ## The `$` operator for string tables. if t.len == 0: result = "{:}" From 6699387c9bc1df433cb5fcefdc91cfacb125f6c4 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 8 Sep 2016 12:16:59 +0200 Subject: [PATCH 116/292] make net.nim compile for osx doc2 --- lib/pure/net.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pure/net.nim b/lib/pure/net.nim index bd208761b..50ae553de 100644 --- a/lib/pure/net.nim +++ b/lib/pure/net.nim @@ -206,7 +206,7 @@ proc newSocket*(fd: SocketHandle, domain: Domain = AF_INET, result.currPos = 0 # Set SO_NOSIGPIPE on OS X. - when defined(macosx): + when defined(macosx) and not defined(nimdoc): setSockOptInt(fd, SOL_SOCKET, SO_NOSIGPIPE, 1) proc newSocket*(domain, sockType, protocol: cint, buffered = true): Socket = From dc8ec4296995d81bb6384beab579b6211c452532 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 8 Sep 2016 15:06:19 +0200 Subject: [PATCH 117/292] documentation now has an 'edit' button --- compiler/docgen.nim | 16 ++++++++++------ config/nimdoc.cfg | 6 ++++-- tools/nimweb.nim | 39 ++++++++++++++++----------------------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/compiler/docgen.nim b/compiler/docgen.nim index bbbec081a..9c72d5a84 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -459,13 +459,17 @@ proc genItem(d: PDoc, n, nameNode: PNode, k: TSymKind) = var seeSrcRope: Rope = nil let docItemSeeSrc = getConfigVar("doc.item.seesrc") - if docItemSeeSrc.len > 0 and options.docSeeSrcUrl.len > 0: - let path = n.info.toFilename.extractFilename.rope - let urlRope = ropeFormatNamedVars(options.docSeeSrcUrl, - ["path", "line"], [path, rope($n.info.line)]) + if docItemSeeSrc.len > 0: + let cwd = getCurrentDir() + var path = n.info.toFullPath + if path.startsWith(cwd): + path = path[cwd.len+1 .. ^1].replace('\\', '/') + var commit = getConfigVar("git.commit") + if commit.len == 0: commit = "master" dispA(seeSrcRope, "$1", "", [ropeFormatNamedVars(docItemSeeSrc, - ["path", "line", "url"], [path, - rope($n.info.line), urlRope])]) + ["path", "line", "url", "commit"], [rope path, + rope($n.info.line), rope getConfigVar("git.url"), + rope commit])]) add(d.section[k], ropeFormatNamedVars(getConfigVar("doc.item"), ["name", "header", "desc", "itemID", "header_plain", "itemSym", diff --git a/config/nimdoc.cfg b/config/nimdoc.cfg index 112833e58..195c97a2e 100644 --- a/config/nimdoc.cfg +++ b/config/nimdoc.cfg @@ -60,8 +60,10 @@ doc.item.toc = """ # * $url: whatever you did pass through the --docSeeSrcUrl switch (which also # gets variables path/line replaced!) doc.item.seesrc = """  Source""" +href="${url}/tree/${commit}/${path}#L${line}" +class="link-seesrc" target="_blank">Source +Edit +""" doc.toc = """