Westlife's Mark Feehily admits he wants to be in the first same sex celeb pair on Strictly
The legendary boy band open up about all things Strictly, I'm A Celebrity, becoming parents and reminisce about life on the road as Westlife
by Kelly AllenWestlife 's Mark Feehily wants to be in the first same sex celeb pair to compete on Strictly Come Dancing .
And the 39-year-old has already met with the show’s talent executive who is responsible for booking the contestants.
Rather that chomping on kangaroo anus like his bandmate Kian Egan who was crowned King of the Jungle in 2014, he is keen to follow Nicky Byrne’s (dancing) footsteps on the BBC1 show.
Mark explained: “We were talking about Kian in the jungle. I just couldn’t do it. I know I couldn’t. I’m particularly squeamish.
“Strictly is the only one with an ability attached to it.
“There is ability with the jungle with the challenges and working stuff out but not in the same way.
 Strictly would be fun to do as I love a freestyle dance.”
Nicky, who danced with Karen Hauer added: “I could see it ‘Dancing The Cha Cha Cha, Mark Feehily and Anton du Beke’.” Mark added: “It would have to be with a guy as it would feel strange for me to go with a girl.
“Well it wouldn’t feel strange but why wouldn’t I do it with a guy?”
And despite being “too busy” focussing on the Westlife 2020, Mark and the rest of the band recently met with Strictly Come Dancing’ talent executive Stefania Aleksander, who is known to be a fan of the band.
He added: “Steph? We met her the other day.”
The band also joined Strictly judge Bruno Tonioli in hitting out at the criticism over Johannes Radebe and Graziano di Prima’s same sex routine.
Kian said: “There was some negativity towards it but it’s just two guys together. Australia already do it. Two-hundred complaints? That’s just the one person complaining repeatedly.”
Becoming a parent
Mark feels the band’s relentless schedule in the early years prepared him for becoming a dad.
The 39-year-old, who welcomed daughter, Layla with his fiance Cailean O’Neill earlier this year, said: “There was sleepless nights before for other reasons.
“Being in Westlife has helped me 100% in terms of getting up at silly hours to do things when you would rather be sleeping.
“It’s just changing to feed the baby instead of getting up at 3am to do crazy-time breakfast TV.”
I'm A Celebrity...Get Me Out Of Here!
Kian, who was crowned Jungle King on I’m A Celebrity in 2014, is backing Jacqueline Jossa to win the show as long as she can keep her focus.
He said: “Watching it so far, Jacqueline is definitely very strong, but she’s going to come to a breaking point and it’s going to be one way or the other for her.”
X Factor: The Band
Westlife have thrown their support behind X Factor : The Band saying the secret of Simon Cowell ’s success in managing boybands is that he makes each group member feel special.
Nicky said: “He’d look at you and give you the wink. He rang me one time and said, ‘Nicky, I think the boys need a bit of styling, can you have a word with them?’
“I thought I was the chosen one but then he’d ring Kian and then Shane then Mark. He was a good manager as he knew how to keep us all interested.”
Extreme celebrating
The Irish boys celebration of their number one album almost cost Kian thousands after he spilt some VERY expensive Cognac.
Nicky explained: “We were in an expensive restaurant and Kian decided to turn a bottle upside down that was on a swivel thing. It was about £3k a shot of brandy.”
But thankfully the restaurant didn’t charge them for the spillage, Kian, 39 added: “I didn’t think it was real.”
Mark joked: “Obviously we licked it all up afterwards.”
Life on the road
Westlife were almost Flying Without Wings literally after two of the band nearly fell out the window of a moving tour bus on the motorway while they were play fighting.
Nicky explained: “We were on the Smash Hits tour bus on the motorway. The lads were wrestling and the window of the bus popped out. They could have fallen out.”
Mark added: “The two of you would have been dead.”
The band, who are celebrating 20 years of music, can’t remember who the culprits were – blaming Shane Filan who was at home sick and Brian McFadden who left the band in 2004.
Nicky added: “It wasn’t me, it wasn’t Kian or Mark so it must have been Shane and Brian.”


[gecode-users] Bugs in Gecode/J
Mikael Zayenz Lagerkvist
zayenz at gmail.com
Tue Apr 15 11:18:34 CEST 2008
On Tue, Apr 15, 2008 at 11:03 AM, Malcolm Ryan <malcolmr at cse.unsw.edu.au> wrote:
> On 15/04/2008, at 6:52 PM, Mikael Zayenz Lagerkvist wrote:
> If you're willing to try it out, all my code is available in a jar file at:
>
> http://www.cse.unsw.edu.au/~malcolmr/aiide08.jar
>
> To run it do:
>
> jar -xf aiide08.jar run1 Maps
> chmod +x run1
> ./run1 7 8
>
> The two numbers after run1 determine the particular experiment. Experiment
> 7 8 is one of the ones that causes a crash [1].
I tried this on my Linux-machine, and it finished in about 5 seconds.
Using memusage*, the peak heap reported was around 300MB, clearly not
a problematic size. So to me it seems like you have a problem with
your set-up.
Sorry I couldn't help more than that.
Cheers,
Mikael
* To see actual memory allocations with glibc. I ran it using
LD_PRELOAD=/lib/libmemusage.so ./run1 7 8
--
Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/
More information about the gecode-users
mailing list


Ast
Namespace: FSharp.Compiler
Nested types and modules
| Type | Description |
| BlockSeparator | denotes location of the separator block + optional position of the semicolon (used for tooling support) |
| ExprAtomicFlag | |
| Ident | |
| LexCont | |
| LexerEndlineContinuation | Specifies how the 'endline' function in the lexer should continue after it reaches end of line or eof. The options are to continue with 'token' function or to continue with 'skip' function. |
| LexerIfdefExpression | |
| LexerIfdefStack | |
| LexerIfdefStackEntries | |
| LexerIfdefStackEntry | |
| LexerWhitespaceContinuation | The parser defines a number of tokens for whitespace and comments eliminated by the lexer. These carry a specification of a continuation for the lexer for continued processing after we've dealt with the whitespace. |
| LongIdent | |
| LongIdentWithDots | |
| MemberFlags | |
| MemberKind | Note the member kind is actually computed partially by a syntax tree transformation in tc.fs |
| NiceNameGenerator | Generates compiler-generated names. Each name generated also includes the StartLine number of the range passed in at the point of first generation. This type may be accessed concurrently, though in practice it is only used from the compilation thread. It is made concurrency-safe since a global instance of the type is allocated in tast.fs, and it is good policy to make all globally-allocated objects concurrency safe in case future versions of the compiler are used to host multiple concurrent instances of compilation. |
| ParsedFsiInteraction | |
| ParsedHashDirective | |
| ParsedImplFile | |
| ParsedImplFileFragment | |
| ParsedImplFileInput | |
| ParsedInput | |
| ParsedSigFile | |
| ParsedSigFileFragment | |
| ParsedSigFileInput | |
| ParserDetail | |
| PreXmlDoc | |
| QualifiedNameOfFile | QualifiedNameOfFile acts to fully-qualify module specifications and implementations, most importantly the ones that simply contribute fragments to a namespace (i.e. the ParsedSigFileFragment.NamespaceFragment case) There may be multiple such fragments in a single assembly. There may thus also be multiple matching pairs of these in an assembly, all contributing types to the same namespace. |
| RecordFieldName | stores pair: record field name + (true if given record field name is syntactically correct and can be used in name resolution) |
| ScopedPragma | |
| SeqExprOnly | Indicates if a for loop is 'for x in e1 -> e2', only valid in sequence expressions |
| SequencePointInfoForBinding | |
| SequencePointInfoForFinally | |
| SequencePointInfoForForLoop | |
| SequencePointInfoForSeq | |
| SequencePointInfoForTarget | |
| SequencePointInfoForTry | |
| SequencePointInfoForWhileLoop | |
| SequencePointInfoForWith | |
| StableNiceNameGenerator | Generates compiler-generated names marked up with a source code location, but if given the same unique value then return precisely the same name. Each name generated also includes the StartLine number of the range passed in at the point of first generation. This type may be accessed concurrently, though in practice it is only used from the compilation thread. It is made concurrency-safe since a global instance of the type is allocated in tast.fs. |
| SynAccess | |
| SynArgInfo | The argument names and other metadata for a parameter for a member or function |
| SynArgNameGenerator | |
| SynAttribute | |
| SynAttributes | |
| SynBinding | |
| SynBindingKind | The kind associated with a binding - "let", "do" or a standalone expression |
| SynBindingReturnInfo | |
| SynComponentInfo | The untyped, unchecked syntax tree associated with the name of a type definition or module in signature or implementation. This includes the name, attributes, type parameters, constraints, documentation and accessibility for a type definition or module. For modules, entries such as the type parameters are always empty. |
| SynConst | The unchecked abstract syntax tree of constants in F# types and expressions. |
| SynConstructorArgs | |
| SynEnumCase | |
| SynEnumCases | |
| SynExceptionDefn | 'exception E = ... with ...' |
| SynExceptionDefnRepr | 'exception E = ... ' |
| SynExceptionSig | |
| SynExpr | |
| SynField | The untyped, unchecked syntax tree for a field declaration in a record or class |
| SynFields | |
| SynIndexerArg | |
| SynInterfaceImpl | |
| SynMatchClause | |
| SynMeasure | The unchecked abstract syntax tree of F# unit of measure annotations. This should probably be merged with the representation of SynType. |
| SynMemberDefn | |
| SynMemberDefns | |
| SynMemberSig | The untyped, unchecked syntax tree for a member signature, used in signature files, abstract member declarations and member constraints. |
| SynMemberSigs | |
| SynModuleDecl | |
| SynModuleDecls | |
| SynModuleOrNamespace | |
| SynModuleOrNamespaceKind | |
| SynModuleOrNamespaceSig | |
| SynModuleSigDecl | |
| SynModuleSigDecls | |
| SynPat | |
| SynRationalConst | The unchecked abstract syntax tree of F# unit of measure exponents. |
| SynReturnInfo | The syntactic elements associated with the "return" of a function or method. Some of this is mostly dummy information to make the return element look like an argument, the important thing is that (a) you can give a return type for the function or method, and (b) you can associate .NET attributes to return of a function or method and these get stored in .NET metadata. |
| SynSimplePat | |
| SynSimplePatAlternativeIdInfo | |
| SynSimplePats | Represents a simple set of variable bindings a, (a,b) or (a:Type,b:Type) at a lambda, function definition or other binding point, after the elimination of pattern matching from the construct, e.g. after changing a "function pat1 -> rule1 | ..." to a "fun v -> match v with ..." |
| SynStaticOptimizationConstraint | |
| SynTypar | |
| SynTyparDecl | Represents the explicit declaration of a type parameter |
| SynType | The unchecked abstract syntax tree of F# types |
| SynTypeConstraint | The unchecked abstract syntax tree of F# type constraints |
| SynTypeDefn | |
| SynTypeDefnKind | |
| SynTypeDefnRepr | |
| SynTypeDefnSig | The untyped, unchecked syntax tree for a type definition in a signature |
| SynTypeDefnSigRepr | The untyped, unchecked syntax tree for the right-hand-side of a type definition in a signature. Note: in practice, using a discriminated union to make a distinction between "simple" types and "object oriented" types is not particularly useful. |
| SynTypeDefnSimpleRepr | The untyped, unchecked syntax tree for the core of a simple type definition, in either signature or implementation. |
| SynUnionCase | |
| SynUnionCaseType | The untyped, unchecked syntax tree for the right-hand-side of union definition, excluding members, in either a signature or implementation. |
| SynUnionCases | |
| SynValData | |
| SynValInfo | The argument names and other metadata for a member or function |
| SynValSig | |
| SynValTyparDecls | The names and other metadata for the type parameters for a member or function |
| SyntaxError | The error raised by the parseerrorrich function, which is called by the parser engine when a syntax error occurs. The first object is the ParseErrorContext which contains a dump of information about the grammar at the point where the error occurred, e.g. what tokens are valid to shift next at that point in the grammar. This information is processed in CompileOps.fs. |
| TyparStaticReq | |
| XmlDoc | |
| XmlDocCollector | Used to collect XML documentation during lexing and parsing. |
| XmlDocStatics |
| Module | Description |
| CustomOperations | |
| FSharpLib | |
| LexbufLocalXmlDocStore | XmlDoc F# lexer/parser state, held in the BufferLocalStore for the lexer. This is the only use of the lexer BufferLocalStore in the codebase. |
| SynInfo | Operations related to the syntactic analysis of arguments of value, function and member definitions and signatures. Function and member definitions have strongly syntactically constrained arities. We infer the arity from the syntax. For example, we record the arity for: StaticProperty --> [1] -- for unit arg this.InstanceProperty --> [1;1] -- for unit arg StaticMethod(args) --> map InferSynArgInfoFromSimplePat args this.InstanceMethod() --> 1 :: map InferSynArgInfoFromSimplePat args this.InstanceProperty with get(argpat) --> 1 :: [InferSynArgInfoFromSimplePat argpat] StaticProperty with get(argpat) --> [InferSynArgInfoFromSimplePat argpat] this.InstanceProperty with get() --> 1 :: [InferSynArgInfoFromSimplePat argpat] StaticProperty with get() --> [InferSynArgInfoFromSimplePat argpat] this.InstanceProperty with set(argpat)(v) --> 1 :: [InferSynArgInfoFromSimplePat argpat; 1] StaticProperty with set(argpat)(v) --> [InferSynArgInfoFromSimplePat argpat; 1] this.InstanceProperty with set(v) --> 1 :: [1] StaticProperty with set(v) --> [1] |
Functions and values
| Function or value | Description |
AbstractMemberFlags k
Signature: k:MemberKind -> MemberFlags
|
|
appFunOpt funOpt x
Signature: funOpt:('?15316 -> '?15316) option -> x:'?15316 -> '?15316
Type parameters: '?15316 |
|
arbExpr (debugStr, range)
Signature: (debugStr:string * range:range) -> SynExpr
|
|
arrPathOfLid lid
Signature: lid:Ident list -> string []
|
|
ClassCtorMemberFlags
Signature: MemberFlags
|
|
composeFunOpt funOpt1 funOpt2
Signature: funOpt1:('?15318 -> '?15318) option -> funOpt2:('?15318 -> '?15318) option -> ('?15318 -> '?15318) option
Type parameters: '?15318 |
|
CtorMemberFlags
Signature: MemberFlags
|
|
FsiDynamicModulePrefix
Signature: string
|
The prefix of the names used for the fake namespace path added to all dynamic code entries in FSI.EXE |
ident (s, r)
Signature: (s:string * r:range) -> Ident
|
|
inferredTyparDecls
Signature: SynValTyparDecls
|
|
IsControlFlowExpression e
Signature: e:SynExpr -> bool
|
This affects placement of sequence points |
LexerIfdefEval lookup _arg1
Signature: lookup:(string -> bool) -> _arg1:LexerIfdefExpression -> bool
|
|
mkAnonField ty
Signature: ty:SynType -> SynField
|
|
mkNamedField (ident, ty)
Signature: (ident:Ident * ty:SynType) -> SynField
|
|
mkSynApp1 f x1 m
Signature: f:SynExpr -> x1:SynExpr -> m:range -> SynExpr
|
|
mkSynApp2 f x1 x2 m
Signature: f:SynExpr -> x1:SynExpr -> x2:SynExpr -> m:range -> SynExpr
|
|
mkSynApp3 f x1 x2 x3 m
Signature: f:SynExpr -> x1:SynExpr -> x2:SynExpr -> x3:SynExpr -> m:range -> SynExpr
|
|
mkSynApp4 f x1 x2 x3 x4 m
Signature: f:SynExpr -> x1:SynExpr -> x2:SynExpr -> x3:SynExpr -> x4:SynExpr -> m:range -> SynExpr
|
|
mkSynApp5 f x1 x2 x3 x4 x5 m
Signature: f:SynExpr -> x1:SynExpr -> x2:SynExpr -> x3:SynExpr -> x4:SynExpr -> x5:SynExpr -> m:range -> SynExpr
|
|
mkSynAssign l r
Signature: l:SynExpr -> r:SynExpr -> SynExpr
|
|
mkSynBifix m oper x1 x2
Signature: m:range -> oper:string -> x1:SynExpr -> x2:SynExpr -> SynExpr
|
|
mkSynBinding (...)
Signature: (xmlDoc:PreXmlDoc * headPat:SynPat) -> (vis:SynAccess option * isInline:bool * isMutable:bool * mBind:range * spBind:SequencePointInfoForBinding * retInfo:SynReturnInfo option * origRhsExpr:SynExpr * mRhs:range * staticOptimizations:(SynStaticOptimizationConstraint list * SynExpr) list * attrs:SynAttributes * memberFlagsOpt:MemberFlags option) -> SynBinding
|
|
mkSynBindingRhs (...)
Signature: staticOptimizations:(SynStaticOptimizationConstraint list * SynExpr) list -> rhsExpr:SynExpr -> mRhs:range -> retInfo:SynReturnInfo option -> SynExpr * SynBindingReturnInfo option
|
|
mkSynCaseName m n
Signature: m:range -> n:string -> Ident list
|
|
mkSynCompGenSimplePatVar id
Signature: id:Ident -> SynSimplePat
|
|
mkSynDelay m e
Signature: m:range -> e:SynExpr -> SynExpr
|
|
mkSynDot dotm m l r
Signature: dotm:range -> m:range -> l:SynExpr -> r:Ident -> SynExpr
|
|
mkSynDotBrackGet m mDot a b
Signature: m:range -> mDot:range -> a:SynExpr -> b:SynExpr -> SynExpr
|
|
mkSynDotBrackSeqSliceGet (...)
Signature: m:range -> mDot:range -> arr:SynExpr -> argslist:SynIndexerArg list -> SynExpr
|
|
mkSynDotBrackSliceGet (...)
Signature: m:range -> mDot:range -> arr:SynExpr -> sliceArg:SynIndexerArg -> SynExpr
|
|
mkSynDotMissing dotm m l
Signature: dotm:range -> m:range -> l:SynExpr -> SynExpr
|
|
mkSynDotParenGet lhsm dotm a b
Signature: lhsm:range -> dotm:range -> a:SynExpr -> b:SynExpr -> SynExpr
|
|
mkSynDotParenSet m a b c
Signature: m:range -> a:SynExpr -> b:SynExpr -> c:SynExpr -> SynExpr
|
|
mkSynFunMatchLambdas (...)
Signature: synArgNameGenerator:SynArgNameGenerator -> isMember:bool -> wholem:range -> ps:SynPat list -> e:SynExpr -> SynExpr
|
|
mkSynId m s
Signature: m:range -> s:string -> Ident
|
|
mkSynIdGet m n
Signature: m:range -> n:string -> SynExpr
|
|
mkSynIdGetWithAlt m id altInfo
Signature: m:range -> id:Ident -> altInfo:SynSimplePatAlternativeIdInfo ref option -> SynExpr
|
|
mkSynInfix opm l oper r
Signature: opm:range -> l:SynExpr -> oper:string -> r:SynExpr -> SynExpr
|
|
mkSynLidGet m path n
Signature: m:range -> path:string list -> n:string -> SynExpr
|
|
mkSynOperator opm oper
Signature: opm:range -> oper:string -> SynExpr
|
|
mkSynPatMaybeVar lidwd vis m
Signature: lidwd:LongIdentWithDots -> vis:SynAccess option -> m:range -> SynPat
|
|
mkSynPatVar vis id
Signature: vis:SynAccess option -> id:Ident -> SynPat
|
|
mkSynPrefix opm m oper x
Signature: opm:range -> m:range -> oper:string -> x:SynExpr -> SynExpr
|
|
mkSynPrefixPrim opm m oper x
Signature: opm:range -> m:range -> oper:string -> x:SynExpr -> SynExpr
|
|
mkSynQMarkSet m a b c
Signature: m:range -> a:SynExpr -> b:SynExpr -> c:SynExpr -> SynExpr
|
|
mkSynSimplePatVar isOpt id
Signature: isOpt:bool -> id:Ident -> SynSimplePat
|
|
mkSynThisPatVar id
Signature: id:Ident -> SynPat
|
|
mkSynTrifix m oper x1 x2 x3
Signature: m:range -> oper:string -> x1:SynExpr -> x2:SynExpr -> x3:SynExpr -> SynExpr
|
|
mkSynUnit m
Signature: m:range -> SynExpr
|
|
mkSynUnitPat m
Signature: m:range -> SynPat
|
|
noInferredTypars
Signature: SynValTyparDecls
|
|
NonVirtualMemberFlags k
Signature: k:MemberKind -> MemberFlags
|
|
opNameParenGet
Signature: string
|
|
opNameQMark
Signature: string
|
|
OverrideMemberFlags k
Signature: k:MemberKind -> MemberFlags
|
|
ParseAssemblyCodeInstructions s m
Signature: s:string -> m:range -> ILInstr array
|
Helper for parsing the inline IL fragments. |
ParseAssemblyCodeType s m
Signature: s:string -> m:range -> ILType
|
Helper for parsing the inline IL fragments. |
pathOfLid lid
Signature: lid:Ident list -> string list
|
|
pathToSynLid m p
Signature: m:range -> p:string list -> Ident list
|
|
PushCurriedPatternsToExpr (...)
Signature: synArgNameGenerator:SynArgNameGenerator -> wholem:range -> isMember:bool -> pats:SynPat list -> rhs:SynExpr -> SynSimplePats list * SynExpr
|
"fun (UnionCase x) (UnionCase y) -> body" ==> "fun tmp1 tmp2 -> let (UnionCase x) = tmp1 in let (UnionCase y) = tmp2 in body" |
PushPatternToExpr (...)
Signature: synArgNameGenerator:SynArgNameGenerator -> isMember:bool -> pat:SynPat -> rhs:SynExpr -> SynSimplePats * SynExpr
|
|
rangeOfLid lid
Signature: lid:Ident list -> range
|
|
SimplePatOfPat synArgNameGenerator p
Signature: synArgNameGenerator:SynArgNameGenerator -> p:SynPat -> SynSimplePat * (SynExpr -> SynExpr) option
|
Push non-simple parts of a patten match over onto the r.h.s. of a lambda. Return a simple pattern and a function to build a match on the r.h.s. if the pattern is complex |
SimplePatsOfPat synArgNameGenerator p
Signature: synArgNameGenerator:SynArgNameGenerator -> p:SynPat -> SynSimplePats * (SynExpr -> SynExpr) option
|
|
StaticMemberFlags k
Signature: k:MemberKind -> MemberFlags
|
|
synExprContainsError inpExpr
Signature: inpExpr:SynExpr -> bool
|
|
textOfId id
Signature: id:Ident -> string
|
|
textOfLid lid
Signature: lid:Ident list -> string
|
|
textOfPath path
Signature: path:seq<string> -> string
|
Active patterns
| Active pattern | Description |
( |LongOrSingleIdent|_| ) inp
Signature: inp:SynExpr -> (bool * LongIdentWithDots * SynSimplePatAlternativeIdInfo ref option * range) option
|
Match a long identifier, including the case for single identifiers which gets a more optimized node in the syntax tree. CompiledName: |
( |SingleIdent|_| ) inp
Signature: inp:SynExpr -> Ident option
|
CompiledName: |
( |SynExprErrorSkip| ) p
Signature: p:SynExpr -> SynExpr
|
CompiledName: |
( |SynExprParen|_| ) e
Signature: e:SynExpr -> (SynExpr * range * range option * range) option
|
CompiledName: |
( |SynPatErrorSkip| ) p
Signature: p:SynPat -> SynPat
|
CompiledName: |
( |SynPatForConstructorDecl|_| ) x
Signature: x:SynPat -> SynPat option
|
Extract the argument for patterns corresponding to the declaration of 'new ... = ...' CompiledName: |
( |SynPatForNullaryArgs|_| ) x
Signature: x:SynPat -> unit option
|
Recognize the '()' in 'new()' CompiledName: |


White on roll, cube action?
pips White=121 Black=116
(CorrectAnswer= 0/0, ErrorScore= 0)
No double Player Winning Chances: 66.729% (G:28.909% B:1.236%) Opponent Winning Chances: 33.271% (G:12.301% B:0.432%) Double/Take Player Winning Chances: 67.187% (G:29.357% B:1.200%) Opponent Winning Chances: 32.813% (G:12.286% B:0.450%) Cubeless Equities: No double=+0.5087 Double=+1.0439 Cubeful Equities No double: +0.5389 (-0.2803) Double/Take: +0.8192 Double/Pass: +1.0000 (+0.1808) Best Cube action: Double / Take


Before your patient can receive a hearing aid, they must complete an appointment with an audiologist. How to make audiology referrals.
Once they have been seen by an audiologist, please email EHHOP's Hearing Aids rep, Kristen Ng for next steps.


JavaScript is disabled on your browser.
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes
A
B
C
D
E
F
G
H
I
K
L
M
O
P
R
S
T
U
V
W
T
TCP_DATAS_MAXLENGTH
- Static variable in class shared.
Constants
The maximum number of bytes that can be transmit in one time
TCPConnection
- Class in
controls.cslavemanagement
TCPConnection()
- Constructor for class controls.cslavemanagement.
TCPConnection
TCPConnection(String, int, int)
- Constructor for class controls.cslavemanagement.
TCPConnection
TCPConnectionThread
- Class in
cslave
TCPConnectionThread(ITCPConnectionToTestedServer)
- Constructor for class cslave.
TCPConnectionThread
TCPConnectionToTestedServer
- Class in
cslave
TCPConnectionToTestedServer()
- Constructor for class cslave.
TCPConnectionToTestedServer
TCPObjectClient
- Class in
shared.tcp
TCPObjectClient()
- Constructor for class shared.tcp.
TCPObjectClient
TCPObjectServer
- Class in
shared.tcp
TCPObjectServer()
- Constructor for class shared.tcp.
TCPObjectServer
TCPProxy
- Class in
controls.ctestplanmanagement
TCPProxy(String, int)
- Constructor for class controls.ctestplanmanagement.
TCPProxy
TCPStringClient
- Class in
shared.tcp
TCPStringClient()
- Constructor for class shared.tcp.
TCPStringClient
TCPStringServer
- Class in
shared.tcp
TCPStringServer()
- Constructor for class shared.tcp.
TCPStringServer
TEST_PLAN_ADD
- Static variable in class tools.
GUIConstants
TEST_PLAN_ADDRESS
- Static variable in class tools.
GUIConstants
TEST_PLAN_ID
- Static variable in class tools.
GUIConstants
TEST_PLAN_REMOVE
- Static variable in class tools.
GUIConstants
testCreator(JFrame, String, boolean)
- Static method in class tools.
GUIFactory
TestCreator
- Class in
tools.widgets
Dialog to create a test
TestCreator(JFrame, String, boolean)
- Constructor for class tools.widgets.
TestCreator
Constructor
TestListenable
- Interface in
gui.interfaces
Observer pattern.
TestListener
- Interface in
gui.interfaces
Observer pattern.
TestManager
- Class in
cslave
TestManager()
- Constructor for class cslave.
TestManager
TestPanel
- Class in
gui.panels
TestPanel(String, String, String, ITestPlanManagement, AbstractMonitoredTest)
- Constructor for class gui.panels.
TestPanel
TESTPANEL_DEFAULT_TITLE
- Static variable in class tools.
GUIConstants
TestParameter
- Class in
cslave
TestParameter()
- Constructor for class cslave.
TestParameter
testPlanCreator(JFrame, String, boolean, List<String>)
- Static method in class tools.
GUIFactory
TestPlanCreator
- Class in
tools.widgets
Dialog to create a test plan
TestPlanCreator(JFrame, String, boolean, List<String>)
- Constructor for class tools.widgets.
TestPlanCreator
Constructor
testPlanGenericSet(String, Object)
- Method in interface controls.ctestplanmanagement.interfaces.
ITestPlanManagement
Modifies the value associated to key in the test plan.
testPlanGenericSet(String, Object)
- Method in class controls.ctestplanmanagement.
TestPlanManagementFacade
TestPlanListenable
- Interface in
gui.interfaces
Observer pattern.
TestPlanListener
- Interface in
gui.interfaces
Observer pattern.
TestPlanManagementFacade
- Class in
controls.ctestplanmanagement
TestPlanManagementFacade()
- Constructor for class controls.ctestplanmanagement.
TestPlanManagementFacade
TestPlanManager
- Class in
gui
Manages panels.
TestPlanManager()
- Constructor for class gui.
TestPlanManager
TestPlanPanelListenable
- Interface in
gui.interfaces
Observer pattern.
TestPlanPanelListener
- Interface in
gui.interfaces
Observer pattern.
TestPlanTree
- Class in
gui
TestPlanTree(JFrame, TestPlanManager, ITestPlanManagement)
- Constructor for class gui.
TestPlanTree
Constructor
toHandle()
- Method in class controls.protocols.
AbstractClientForBlankTest
Indicates that the next sent tcp data have to be bind to an instruction
toHandle()
- Method in class controls.protocols.ldap.
LDAPClientForBlankTest
tools
- package tools
tools.widgets
- package tools.widgets
tools.widgets.ldap
- package tools.widgets.ldap
toStringBinaryArray(byte[])
- Static method in class shared.
Utils
TREE_ADD_SCALABILITY_TEST
- Static variable in class tools.
GUIConstants
TREE_ADD_WORKLOAD_TEST
- Static variable in class tools.
GUIConstants
TREE_CREATE_TESTPLAN
- Static variable in class tools.
GUIConstants
TREE_DEFAULT_ROOT
- Static variable in class tools.
GUIConstants
TREE_RENAME_TEST
- Static variable in class tools.
GUIConstants
TREE_RENAME_TESTPLAN
- Static variable in class tools.
GUIConstants
TREE_SIZE_X
- Static variable in class tools.
GUIConstants
TREE_SIZE_Y
- Static variable in class tools.
GUIConstants
tryGiveWork()
- Method in interface cslave.interfaces.
ITCPConnectionToTestedServer
Try to give work to this client
tryGiveWork()
- Method in class cslave.
TCPConnectionToTestedServer
A
B
C
D
E
F
G
H
I
K
L
M
O
P
R
S
T
U
V
W
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes


Do you know that someone is
Missing You!
,
(after clicking the link you will find out !.)
Hope you had fun!.


Computer Science Core Subjects
Back
Home
1) Class contain the data through data members?
true
false
2) General form of class,
class class_name{
//body of class
}
true
false
3) Following line is correct to create the object or not?
Classname objectname= new classname();
true
false
4) General form of a method,
access return-type name(parameter) body of method}?
true
false
5) Which of the following is true for constructor?
Name of the constructor is exactly same as that of the class.
Constructors do not have return type.
Constructors are invoked by the new operator upon the memory allocated for an object.
Constructors are there to initialize the objects.
All
6) This keyword refers to the object on which the method is acting.
true
false
7) General form of two dimensional array,
type[,] arrayname = new int[10, 20];
true
false
8) General form of jagged array,
type[][] array-name=new type[size][];
true
false
9) Which of the following is use in inheritance,
type[][] array-name=new type[size][];
;
,
:
.
Submit
Your score will show below


InputContext
A class wrapping information needed by an input function.
tf.compat.v1.distribute.InputContext
tf.compat.v2.distribute.InputContext
This is a context class that is passed to the user's input function and contains information about the compute replicas and input pipelines. The number of compute replicas (in sync training) helps compute the local batch size from the desired global batch size for each replica. The input pipeline information can be used to return a different subset of the input in each replica (for e.g. shard the input pipeline, use a different input source etc).
__init__
__init__( num_input_pipelines=1, input_pipeline_id=0, num_replicas_in_sync=1 )
Initializes an InputContext object.
num_input_pipelines
: the number of input pipelines in a cluster.input_pipeline_id
: the current input pipeline id, should be an int in
[0,num_input_pipelines
).num_replicas_in_sync
: the number of replicas that are in sync.input_pipeline_id
Returns the input pipeline ID.
num_input_pipelines
Returns the number of input pipelines.
num_replicas_in_sync
Returns the number of compute replicas in sync.
get_per_replica_batch_size
get_per_replica_batch_size(global_batch_size)
Returns the per-replica batch size.
global_batch_size
: the global batch size which should be divisible by
num_replicas_in_sync
.the per-replica batch size.
ValueError
: if global_batch_size
not divisible by
num_replicas_in_sync
.


Hello admin |
Welcome, Department Administrator. Your department's computer allocation for 2014 – 2015 is 5.
Please enter the PID for each employee you wish to receive a computer this year. Also required is a default delivery address were all machines will be delivered, unless an alternate address is given along with the receiver's PID. If you have a new hire or an employee that has not yet setup a PID, check the box next to the PID entry field.
Please use the table below to enter the new hire PIDs once they have been created. The table should also be used to approve and lock the computer order. Once the order has been approved/locked, the participant will no longer be able to change their order


OverTheWire - Bandit Levels 10 to 19
Bandit Level 10 → Level 11
Level Goal
The password for the next level is stored in the file data.txt, which contains base64 encoded data
Commands you may need to solve this level
grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd
Helpful Reading Material
Solution
So the password is encoded using base64? Let’s checkout the command with the same name ~~
bandit10@bandit:~$ cat data.txt
VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg==
bandit10@bandit:~$ base64 --help
Usage: base64 [OPTION]... [FILE]
Base64 encode or decode FILE, or standard input, to standard output.
[...]
Mandatory arguments to long options are mandatory for short options too.
-d, --decode decode data
The -d
option will allow us to decode the file ~~
bandit10@bandit:~$ base64 -d data.txt
The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
Creds:
ssh<EMAIL_ADDRESS>-p 2220
IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
Bandit Level 11 → Level 12
Level Goal
The password for the next level is stored in the file data.txt, where all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions
Commands you may need to solve this level
grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd
Helpful Reading Material
Solution
bandit11@bandit:~$ ls
data.txt
The password has been all mish-mashed, letters have been rotated by 13 positions! That type of transformation is commonly called rot13
. A little poking around about rot13 and bash yields the following:
echo<EMAIL_ADDRESS>| tr ‘A-Za-z’ ‘N-ZA-Mn-za-m’
Great, let’s try that on data.txt
bandit11@bandit:~$ cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
The password is 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu
Creds:
ssh<EMAIL_ADDRESS>-p 2220
5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu
Bandit Level 12 → Level 13
Level Goal
The password for the next level is stored in the file data.txt, which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work using mkdir. For example: mkdir /tmp/myname123. Then copy the datafile using cp, and rename it using mv (read the manpages!)
Commands you may need to solve this level
grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv, file
Helpful Reading Material
Solution
bandit12@bandit:~$ cat data.txt
00000000: 1f8b 0808 d7d2 c55b 0203 6461 7461 322e .......[..data2.
00000010: 6269 6e00 013c 02c3 fd42 5a68 3931 4159 bin..<...BZh91AY
00000020: 2653 591d aae5 9800 001b ffff de7f 7fff &SY.............
00000030: bfb7 dfcf 9fff febf f5ad efbf bbdf 7fdb ................
00000040: f2fd ffdf effa 7fff fbd7 bdff b001 398c ..............9.
00000050: 1006 8000 0000 0d06 9900 0000 6834 000d ............h4..
00000060: 01a1 a000 007a 8000 0d00 0006 9a00 d034 .....z.........4
Hum, the BZh91AY&SY
part of the hexdump is specific to bz2 archives…
Anyway, let’s create a working directory in /tmp
and work there:
bandit12@bandit:~$ mkdir /tmp/mimipotato
bandit12@bandit:~$ cp data.txt /tmp/mimipotato
bandit12@bandit:~$ cd /tmp/mimipotato
So the file contains a hexdump, let’s turn that hexdump back into a file, and use the file
command to guess it’s type:
bandit12@bandit:/tmp/mimipotato$ cat data.txt | xxd -r > data.bin
bandit12@bandit:/tmp/mimipotato$ file data.bin
data.bin: gzip compressed data, was "data2.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix
It’s a gzip archive, that can be extracted with tar, with these options:
-z, --gzip, --gunzip, --ungzip
Filter the archive through gzip(1).
-x, --extract, --get
Extract files from an archive. Arguments are optional. When
given, they specify names of the archive members to be ex‐
tracted.
bandit12@bandit:/tmp/mimipotato$ mv data.bin data.tar.gz
For some reason, extracting with tar didn’t work:
bandit12@bandit:/tmp/mimipotato$ tar zxvf data.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors
Let’s try to uncompress with gunzip
instead:
bandit12@bandit:/tmp/mimipotato$ gunzip data.tar.gz
bandit12@bandit:/tmp/mimipotato$ ls
data.tar data.txt
bandit12@bandit:/tmp/mimipotato$ file data.tar
data.tar: bzip2 compressed data, block size = 900k
bandit12@bandit:/tmp/mimipotato$ mv data.tar data.bz2
Let’s try the -d
for decompress option of the bzip2
command then:
bandit12@bandit:/tmp/mimipotato$ bzip2 -d data.bz2
bandit12@bandit:/tmp/mimipotato$ ls
data data.tar.gz data.txt
bandit12@bandit:/tmp/mimipotato$ file data
data: gzip compressed data, was "data4.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix
bandit12@bandit:/tmp/mimipotato$ mv data data4.gz
Let’s have another round of gunzip
then:
bandit12@bandit:/tmp/mimipotato$ gunzip data4.gz
bandit12@bandit:/tmp/mimipotato$ ls
data4 data.tar.gz data.txt
bandit12@bandit:/tmp/mimipotato$ file data4
data4: POSIX tar archive (GNU)
Ah finally a tar
archive!
bandit12@bandit:/tmp/mimipotato$ tar xf data4
bandit12@bandit:/tmp/mimipotato$ ls
data4 data5.bin data.tar.gz data.txt
bandit12@bandit:/tmp/mimipotato$ file data5.bin
data5.bin: POSIX tar archive (GNU)
Which contains another tar archive:
bandit12@bandit:/tmp/mimipotato$ tar xf data5.bin
bandit12@bandit:/tmp/mimipotato$ ls
data4 data5.bin data6.bin data.tar.gz data.txt
bandit12@bandit:/tmp/mimipotato$ file data6.bin
data6.bin: bzip2 compressed data, block size = 900k
And another bzip2 archive:
bandit12@bandit:/tmp/mimipotato$ bzip2 -d data6.bin
bzip2: Can't guess original name for data6.bin -- using data6.bin.out
bandit12@bandit:/tmp/mimipotato$ file data6.bin.out
data6.bin.out: POSIX tar archive (GNU)
Containing another tar archive:
bandit12@bandit:/tmp/mimipotato$ tar xf data6.bin.out
bandit12@bandit:/tmp/mimipotato$ ls
data4 data5.bin data6.bin.out data8.bin data.tar.gz data.txt
bandit12@bandit:/tmp/mimipotato$ file data8.bin
data8.bin: gzip compressed data, was "data9.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix
With another gzip archive:
bandit12@bandit:/tmp/mimipotato$ mv data8.bin data8.gz
bandit12@bandit:/tmp/mimipotato$ gunzip data8.tar.gz
bandit12@bandit:/tmp/mimipotato$ file data8.tar
data8.tar: ASCII text
And finally a text file!
bandit12@bandit:/tmp/mimipotato$ mv data8.tar data8.txt
bandit12@bandit:/tmp/mimipotato$ cat data8.txt
The password is 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
Creds:
ssh<EMAIL_ADDRESS>-p 2220
8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
Bandit Level 13 → Level 14
Level Goal
The password for the next level is stored in /etc/bandit_pass/bandit14 and can only be read by user bandit14. For this level, you don’t get the next password, but you get a private SSH key that can be used to log into the next level. Note: localhost is a hostname that refers to the machine you are working on
Commands you may need to solve this level
ssh, telnet, nc, openssl, s_client, nmap
Helpful Reading Material
Solution
bandit13@bandit:~$ ls
sshkey.private
bandit13@bandit:~$ cat sshkey.private
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAxkkOE83W2cOT7IWhFc9aPaaQmQDdgzuXCv+ppZHa++buSkN+
gg0tcr7Fw8NLGa5+Uzec2rEg0WmeevB13AIoYp0MZyETq46t+jk9puNwZwIt9XgB
ZufGtZEwWbFWw/vVLNwOXBe4UWStGRWzgPpEeSv5Tb1VjLZIBdGphTIK22Amz6Zb
ThMsiMnyJafEwJ/T8PQO3myS91vUHEuoOMAzoUID4kN0MEZ3+XahyK0HJVq68KsV
ObefXG1vvA3GAJ29kxJaqvRfgYnqZryWN7w3CHjNU4c/2Jkp+n8L0SnxaNA+WYA7
jiPyTF0is8uzMlYQ4l1Lzh/8/MpvhCQF8r22dwIDAQABAoIBAQC6dWBjhyEOzjeA
J3j/RWmap9M5zfJ/wb2bfidNpwbB8rsJ4sZIDZQ7XuIh4LfygoAQSS+bBw3RXvzE
pvJt3SmU8hIDuLsCjL1VnBY5pY7Bju8g8aR/3FyjyNAqx/TLfzlLYfOu7i9Jet67
xAh0tONG/u8FB5I3LAI2Vp6OviwvdWeC4nOxCthldpuPKNLA8rmMMVRTKQ+7T2VS
nXmwYckKUcUgzoVSpiNZaS0zUDypdpy2+tRH3MQa5kqN1YKjvF8RC47woOYCktsD
o3FFpGNFec9Taa3Msy+DfQQhHKZFKIL3bJDONtmrVvtYK40/yeU4aZ/HA2DQzwhe
ol1AfiEhAoGBAOnVjosBkm7sblK+n4IEwPxs8sOmhPnTDUy5WGrpSCrXOmsVIBUf
laL3ZGLx3xCIwtCnEucB9DvN2HZkupc/h6hTKUYLqXuyLD8njTrbRhLgbC9QrKrS
M1F2fSTxVqPtZDlDMwjNR04xHA/fKh8bXXyTMqOHNJTHHNhbh3McdURjAoGBANkU
1hqfnw7+aXncJ9bjysr1ZWbqOE5Nd8AFgfwaKuGTTVX2NsUQnCMWdOp+wFak40JH
PKWkJNdBG+ex0H9JNQsTK3X5PBMAS8AfX0GrKeuwKWA6erytVTqjOfLYcdp5+z9s
8DtVCxDuVsM+i4X8UqIGOlvGbtKEVokHPFXP1q/dAoGAcHg5YX7WEehCgCYTzpO+
xysX8ScM2qS6xuZ3MqUWAxUWkh7NGZvhe0sGy9iOdANzwKw7mUUFViaCMR/t54W1
GC83sOs3D7n5Mj8x3NdO8xFit7dT9a245TvaoYQ7KgmqpSg/ScKCw4c3eiLava+J
3btnJeSIU+8ZXq9XjPRpKwUCgYA7z6LiOQKxNeXH3qHXcnHok855maUj5fJNpPbY
iDkyZ8ySF8GlcFsky8Yw6fWCqfG3zDrohJ5l9JmEsBh7SadkwsZhvecQcS9t4vby
9/8X4jS0P8ibfcKS4nBP+dT81kkkg5Z5MohXBORA7VWx+ACohcDEkprsQ+w32xeD
qT1EvQKBgQDKm8ws2ByvSUVs9GjTilCajFqLJ0eVYzRPaY6f++Gv/UVfAPV4c+S0
kAWpXbv5tbkkzbS0eaLPTKgLzavXtQoTtKwrjpolHKIHUz6Wu+n4abfAIRFubOdN
/+aLoRQ0yBDRbdXMsZN/jvY44eM+xRLdRVyMmdPtP8belRi2E2aEzA==
-----END RSA PRIVATE KEY-----
So, we have a private RSA key file! How do we tell ssh to use it though?
-i identity_file Selects a file from which the identity (private key) for public key authentication is read. The default is ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk and ~/.ssh/id_rsa. Identity files may also be specified on a per-host basis in the configuration file. It is possible to have multiple -i options (and multiple identities specified in configuration files). If no certificates have been explicitly specified by the CertificateFile directive, ssh will also try to load certificate information from the filename ob‐ tained by appending -cert.pub to identity filenames.
– man ssh
bandit13@bandit:~$ ssh -i sshkey.private bandit14@localhost
Could not create directory '/home/bandit13/.ssh'.
The authenticity of host 'localhost (<IP_ADDRESS>)' can't be established.
ECDSA key fingerprint is SHA256:98UL0ZWr85496EtCRkKlo20X3OPnyPSB5tB5RPbhczc.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/bandit13/.ssh/known_hosts).
This is a OverTheWire game server. More information on http://www.overthewire.org/wargames
[...]
And we’re in! Now, we just need to print the password:
bandit14@bandit:~$ cat /etc/bandit_pass/bandit14
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Creds:
ssh<EMAIL_ADDRESS>-p 2220
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Bandit Level 14 → Level 15
Level Goal
The password for the next level can be retrieved by submitting the password of the current level to port 30000 on localhost.
Commands you may need to solve this level
ssh, telnet, nc, openssl, s_client, nmap
Helpful Reading Material
- How the Internet works in 5 minutes (YouTube) (Not completely accurate, but good enough for beginners)
- IP Addresses
- IP Address on Wikipedia
- Localhost on Wikipedia
- Ports
- Port (computer networking) on Wikipedia
Solution
Nothing too fancy here, the syntax for netcat is nc <hostname> <port>
, so fill in the blanks. And add an echo <password>
and a pipe to feed the password to netcat.
bandit14@bandit:~$ echo "4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e" | nc localhost 3000
Correct!
BfMYroe26WYalil77FoDi9qh59eK5xNr
Creds:
ssh<EMAIL_ADDRESS>-p 2220
BfMYroe26WYalil77FoDi9qh59eK5xNr
Bandit Level 15 → Level 16
Level Goal
The password for the next level can be retrieved by submitting the password of the current level to port 30001 on localhost using SSL encryption.
Helpful note: Getting “HEARTBEATING” and “Read R BLOCK”? Use -ign_eof and read the “CONNECTED COMMANDS” section in the manpage. Next to ‘R’ and ‘Q’, the ‘B’ command also works in this version of that command…
Commands you may need to solve this level
ssh, telnet, nc, openssl, s_client, nmap
Helpful Reading Material
Solution
SSL connection huh? What does the manual of openssl says about that?
s_client This implements a generic SSL/TLS client which can establish a transparent connection to a remote server speaking SSL/TLS. It’s intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL ssl library.
– man openssl
More information about s_client
-connect host:port This specifies the host and optional port to connect to. It is possible to select the host and port using the optional target positional argument instead. If neither this nor the target positional argument are specified then an attempt is made to connect to the local host on port 4433.
– man s_client
Okay, let’s put all these information together ~~
bandit15@bandit:~$ openssl s_client -connect localhost:30001
CONNECTED(00000003)
depth=0 CN = localhost
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = localhost
verify return:1
---
Certificate chain
0 s:/CN=localhost
i:/CN=localhost
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICBjCCAW+gAwIBAgIEYo1NxTANBgkqhkiG9w0BAQUFADAUMRIwEAYDVQQDDAls
b2NhbGhvc3QwHhcNMjAwMTA1MTQzNTU4WhcNMjEwMTA0MTQzNTU4WjAUMRIwEAYD
VQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKF4u2eu
a8VipZPviX0hfNiCnaD2ojAffdBhKTy1bmZSNRuHPBDnU7z8rblNSknSjCITda1C
GEAI8ZktRbtLpBTbYeTgqPN/EiN5UIRMKbU6P2O93zNFPBsmyfQLrgt+DSLnsxlB
i/yYyT7WLdtNVBpgwRwkqi9K7dk9vf9waswLAgMBAAGjZTBjMBQGA1UdEQQNMAuC
CWxvY2FsaG9zdDBLBglghkgBhvhCAQ0EPhY8QXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgYnkgTmNhdC4gU2VlIGh0dHBzOi8vbm1hcC5vcmcvbmNhdC8uMA0GCSqGSIb3
DQEBBQUAA4GBAJECW6IB3Ria4xG002BqD3zEbtmrDlK6nmJq+uQ4eJ6cT18o9REb
npy/lFzlv2LfcrYAnuAp6Fh89MKaYjNzJURjRQ9RkmcYgQJa1n+OBkATb7V+84/a
k9PDRkscxdNFMGBSvzFD33XZ5lbaGdrwCPyoxenoYghV/753wffN7J6H
-----END CERTIFICATE-----
subject=/CN=localhost
issuer=/CN=localhost
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1019 bytes and written 269 bytes
Verification error: self signed certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: 08C10D3E63523726C9ECD8753EE7A0737DE0CE2E94F443D5B5669EE05D27CAB3
Session-ID-ctx:
Master-Key: C782359E52443C06C1F5D47B35671B9AA929600D8D763D4751D9DB9F39FC3EAC8D12FC15739E77B82479D259B94CB8F6
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
0000 - 56 e9 4e 87 6a 28 48 d0-13 42 5f b9 61 b0 dd d0 V.N.j(H..B_.a...
0010 - 6b 78 27 dc 9d 91 45 42-d5 db e8 49 70 f3 a2 7c kx'...EB...Ip..|
0020 - 5d c1 32 11 d5 9a c8 38-8b d3 c6 f9 f1 11 5f 1a ].2....8......_.
0030 - 3a c1 6c 69 92 83 25 a8-ea fb 97 d9 11 03 bd 0c :.li..%.........
0040 - 26 2a a7 8d 37 92 c8 2f-f1 c3 bf 04 08 4b 60 2d &*..7../.....K`-
0050 - e7 48 12 46 b0 c3 18 50-c4 d4 55 70 14 39 97 1b .H.F...P..Up.9..
0060 - 47 cb 2a af b3 4d 03 ea-28 7e 70 ba 3f 5b d5 58 G.*..M..(~p.?[.X
0070 - 5e c1 eb 98 83 1c bb 3a-68 af e4 8e 93 c5 13 27 ^......:h......'
0080 - d5 d9 8f 5d 86 aa a6 76-d2 14 fd 7a 21 3f d2 58 ...]...v...z!?.X
0090 - a2 6b ca 92 63 89 86 55-6e cc a2 72 41 04 33 ed .k..c..Un..rA.3.
Start Time:<PHONE_NUMBER>
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: yes
---
^C
bandit15@bandit:~$ echo "BfMYroe26WYalil77FoDi9qh59eK5xNr" |openssl s_client >
CONNECTED(00000003)
depth=0 CN = localhost
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = localhost
verify return:1
---
Certificate chain
0 s:/CN=localhost
i:/CN=localhost
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICBjCCAW+gAwIBAgIEYo1NxTANBgkqhkiG9w0BAQUFADAUMRIwEAYDVQQDDAls
b2NhbGhvc3QwHhcNMjAwMTA1MTQzNTU4WhcNMjEwMTA0MTQzNTU4WjAUMRIwEAYD
VQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKF4u2eu
a8VipZPviX0hfNiCnaD2ojAffdBhKTy1bmZSNRuHPBDnU7z8rblNSknSjCITda1C
GEAI8ZktRbtLpBTbYeTgqPN/EiN5UIRMKbU6P2O93zNFPBsmyfQLrgt+DSLnsxlB
i/yYyT7WLdtNVBpgwRwkqi9K7dk9vf9waswLAgMBAAGjZTBjMBQGA1UdEQQNMAuC
CWxvY2FsaG9zdDBLBglghkgBhvhCAQ0EPhY8QXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgYnkgTmNhdC4gU2VlIGh0dHBzOi8vbm1hcC5vcmcvbmNhdC8uMA0GCSqGSIb3
DQEBBQUAA4GBAJECW6IB3Ria4xG002BqD3zEbtmrDlK6nmJq+uQ4eJ6cT18o9REb
npy/lFzlv2LfcrYAnuAp6Fh89MKaYjNzJURjRQ9RkmcYgQJa1n+OBkATb7V+84/a
k9PDRkscxdNFMGBSvzFD33XZ5lbaGdrwCPyoxenoYghV/753wffN7J6H
-----END CERTIFICATE-----
subject=/CN=localhost
issuer=/CN=localhost
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1019 bytes and written 269 bytes
Verification error: self signed certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: B4185845AE13126255EFC925DE2256864C2894581629C9B14F99F14D3F02A95F
Session-ID-ctx:
Master-Key: 8B8749D2BBEE219B96A2692D686FA465EBBEACC2BC9EC670D6FA686789DD05C70AB401F4A1C5E0B8A5BB06E5B42A25EA
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
0000 - 56 e9 4e 87 6a 28 48 d0-13 42 5f b9 61 b0 dd d0 V.N.j(H..B_.a...
0010 - 9f 2b 06 3c 2e fb 9c ee-60 a5 24 b5 c3 36 9c 88 .+.<....`.$..6..
0020 - 42 92 6a 73 02 15 4d 06-b8 a6 87 0c f0 ca 90 bb B.js..M.........
0030 - ee 22 56 d9 36 85 18 e3-7d 66 f8 2b 05 96 24 65 ."V.6...}f.+..$e
0040 - fe 12 77 91 f1 2f 5e c8-0b 29 0e 58 db a0 50 fe ..w../^..).X..P.
0050 - 01 a9 73 4d 42 22 56 0c-63 ee d5 a6 7e aa 05 78 ..sMB"V.c...~..x
0060 - 27 18 81 74 a0 40 51 4a-cb 9d eb 52 48 f7 6b ce<EMAIL_ADDRESS>0070 - 1f 2e 4b ac f0 61 66 2d-3d 6e cf a5 c2 0c 3a a7 ..K..af-=n....:.
0080 - f0 f3 aa 1f d8 e6 1a 20-b9 90 bf 0a d6 5d 49 ec ....... .....]I.
0090 - d0 97 45 9f d8 96 0d 72-19 91 c8 cf fa c6 32 54 ..E....r......2T
Start Time:<PHONE_NUMBER>
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: yes
---
DONE
bandit15@bandit:~$ openssl s_client -connect localhost:30001
CONNECTED(00000003)
depth=0 CN = localhost
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = localhost
verify return:1
---
Certificate chain
0 s:/CN=localhost
i:/CN=localhost
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICBjCCAW+gAwIBAgIEYo1NxTANBgkqhkiG9w0BAQUFADAUMRIwEAYDVQQDDAls
b2NhbGhvc3QwHhcNMjAwMTA1MTQzNTU4WhcNMjEwMTA0MTQzNTU4WjAUMRIwEAYD
VQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKF4u2eu
a8VipZPviX0hfNiCnaD2ojAffdBhKTy1bmZSNRuHPBDnU7z8rblNSknSjCITda1C
GEAI8ZktRbtLpBTbYeTgqPN/EiN5UIRMKbU6P2O93zNFPBsmyfQLrgt+DSLnsxlB
i/yYyT7WLdtNVBpgwRwkqi9K7dk9vf9waswLAgMBAAGjZTBjMBQGA1UdEQQNMAuC
CWxvY2FsaG9zdDBLBglghkgBhvhCAQ0EPhY8QXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgYnkgTmNhdC4gU2VlIGh0dHBzOi8vbm1hcC5vcmcvbmNhdC8uMA0GCSqGSIb3
DQEBBQUAA4GBAJECW6IB3Ria4xG002BqD3zEbtmrDlK6nmJq+uQ4eJ6cT18o9REb
npy/lFzlv2LfcrYAnuAp6Fh89MKaYjNzJURjRQ9RkmcYgQJa1n+OBkATb7V+84/a
k9PDRkscxdNFMGBSvzFD33XZ5lbaGdrwCPyoxenoYghV/753wffN7J6H
-----END CERTIFICATE-----
subject=/CN=localhost
issuer=/CN=localhost
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1019 bytes and written 269 bytes
Verification error: self signed certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: C36A88704650F317590B0C933E6B0818DE62799FE13ABAD1D4101CBD31D945E0
Session-ID-ctx:
Master-Key: 8F972E40AD1E240F74A102FA1915B9ECD1115812FFDCBB1F2D0ED80DB98A28FCCA388EACAECC96154992126A1B47146F
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
0000 - 56 e9 4e 87 6a 28 48 d0-13 42 5f b9 61 b0 dd d0 V.N.j(H..B_.a...
0010 - 85 c5 46 8e 80 9b 30 d6-3f 90 16 44 ba bf 85 a1 ..F...0.?..D....
0020 - ff 22 01 e9 8e 7e c5 bd-67 c9 6a 3a e1 66 86 05 ."...~..g.j:.f..
0030 - db e0 b4 d5 3f d8 46 aa-0b 97 de ac 6d 0f a3 b9 ....?.F.....m...
0040 - a0 de f0 87 1b 0e e7 2a-e4 b3 bf 4a e9 97 52 67 .......*...J..Rg
0050 - 67 67 91 03 7c 22 74 13-42 ef ba 23 0a cb 75 dd gg..|"t.B..#..u.
0060 - e5 c7 b1 12 79 84 c9 e4-1e e6 87 a7 6f 13 22 a0 ....y.......o.".
0070 - 76 7f 24 73 1f 30 72 3f-da 35 8d 18 0d 60 20 e7 v.$s.0r?.5...` .
0080 - 12 b6 2c 75 85 80 7d 85-7e 37 6d db bc f4 a2 9b ..,u..}.~7m.....
0090 - e4 23 b2 32 33 96 af e9-c0 0c 49 24 75 a6 6d 80 .#.23.....I$u.m.
Start Time:<PHONE_NUMBER>
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: yes
---
BfMYroe26WYalil77FoDi9qh59eK5xNr
Correct!
cluFn7wTiGryunymYOu4RcffSxQluehd
closed
Creds:
ssh<EMAIL_ADDRESS>-p 2220
cluFn7wTiGryunymYOu4RcffSxQluehd
Bandit Level 16 → Level 17
Level Goal
The credentials for the next level can be retrieved by submitting the password of the current level to a port on localhost in the range 31000 to 32000. First find out which of these ports have a server listening on them. Then find out which of those speak SSL and which don’t. There is only 1 server that will give the next credentials, the others will simply send back to you whatever you send to it.
Commands you may need to solve this level
ssh, telnet, nc, openssl, s_client, nmap
Helpful Reading Material
Solution
Let’s run the most famous of the port scanner around here, nmap!
The option -p
with a -
between two values allows to specify a range of ports to scan:
bandit16@bandit:~$ nmap -p31000:32000 localhost
Starting Nmap 7.40 ( https://nmap.org ) at 2020-03-15 15:57 CET
Error #487: Your port specifications are illegal. Example of proper form: "-100,200-1024,T:3000-4000,U:60000-"
QUITTING!
bandit16@bandit:~$ nmap -p31000-32000 localhost
Starting Nmap 7.40 ( https://nmap.org ) at 2020-03-15 15:58 CET
Nmap scan report for localhost (<IP_ADDRESS>)
Host is up (0.00036s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
31518/tcp filtered unknown
31790/tcp open unknown
31960/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 1.26 seconds
bandit16@bandit:~$ nmap -p31000-32000 localhost -O
TCP/IP fingerprinting (for OS scan) requires root privileges.
QUITTING!
So we found 3 potential ports to try out, but we don’t know which has SSL or not… Fortunately, Nmap has another sexy feature in stock, it can do service detection with the option -sV
:
Let’s run the scan again:
bandit16@bandit:~$ nmap -p31000-32000 localhost -sV
Starting Nmap 7.40 ( https://nmap.org ) at 2020-03-15 15:59 CET
Stats: 0:01:09 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 50.00% done; ETC: 16:01 (0:01:08 remaining)
Nmap scan report for localhost (<IP_ADDRESS>)
Host is up (0.00026s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
31518/tcp filtered unknown
31790/tcp open ssl/unknown
31960/tcp open echo
And voilà, our target port is 31790
bandit16@bandit:~$ openssl s_client -connect localhost:31790
[...]
cluFn7wTiGryunymYOu4RcffSxQluehd
Correct!
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvmOkuifmMg6HL2YPIOjon6iWfbp7c3jx34YkYWqUH57SUdyJ
imZzeyGC0gtZPGujUSxiJSWI/oTqexh+cAMTSMlOJf7+BrJObArnxd9Y7YT2bRPQ
Ja6Lzb558YW3FZl87ORiO+rW4LCDCNd2lUvLE/GL2GWyuKN0K5iCd5TbtJzEkQTu
DSt2mcNn4rhAL+JFr56o4T6z8WWAW18BR6yGrMq7Q/kALHYW3OekePQAzL0VUYbW
JGTi65CxbCnzc/w4+mqQyvmzpWtMAzJTzAzQxNbkR2MBGySxDLrjg0LWN6sK7wNX
x0YVztz/zbIkPjfkU1jHS+9EbVNj+D1XFOJuaQIDAQABAoIBABagpxpM1aoLWfvD
KHcj10nqcoBc4oE11aFYQwik7xfW+24pRNuDE6SFthOar69jp5RlLwD1NhPx3iBl
J9nOM8OJ0VToum43UOS8YxF8WwhXriYGnc1sskbwpXOUDc9uX4+UESzH22P29ovd
d8WErY0gPxun8pbJLmxkAtWNhpMvfe0050vk9TL5wqbu9AlbssgTcCXkMQnPw9nC
YNN6DDP2lbcBrvgT9YCNL6C+ZKufD52yOQ9qOkwFTEQpjtF4uNtJom+asvlpmS8A
vLY9r60wYSvmZhNqBUrj7lyCtXMIu1kkd4w7F77k+DjHoAXyxcUp1DGL51sOmama
+TOWWgECgYEA8JtPxP0GRJ+IQkX262jM3dEIkza8ky5moIwUqYdsx0NxHgRRhORT
8c8hAuRBb2G82so8vUHk/fur85OEfc9TncnCY2crpoqsghifKLxrLgtT+qDpfZnx
SatLdt8GfQ85yA7hnWWJ2MxF3NaeSDm75Lsm+tBbAiyc9P2jGRNtMSkCgYEAypHd
HCctNi/FwjulhttFx/rHYKhLidZDFYeiE/v45bN4yFm8x7R/b0iE7KaszX+Exdvt
SghaTdcG0Knyw1bpJVyusavPzpaJMjdJ6tcFhVAbAjm7enCIvGCSx+X3l5SiWg0A
R57hJglezIiVjv3aGwHwvlZvtszK6zV6oXFAu0ECgYAbjo46T4hyP5tJi93V5HDi
Ttiek7xRVxUl+iU7rWkGAXFpMLFteQEsRr7PJ/lemmEY5eTDAFMLy9FL2m9oQWCg
R8VdwSk8r9FGLS+9aKcV5PI/WEKlwgXinB3OhYimtiG2Cg5JCqIZFHxD6MjEGOiu
L8ktHMPvodBwNsSBULpG0QKBgBAplTfC1HOnWiMGOU3KPwYWt0O6CdTkmJOmL8Ni
blh9elyZ9FsGxsgtRBXRsqXuz7wtsQAgLHxbdLq/ZJQ7YfzOKU4ZxEnabvXnvWkU
YOdjHdSOoKvDQNWu6ucyLRAWFuISeXw9a/9p7ftpxm0TSgyvmfLF2MIAEwyzRqaM
77pBAoGAMmjmIJdjp+Ez8duyn3ieo36yrttF5NSsJLAbxFpdlc1gvtGCWW+9Cq0b
dxviW8+TFVEBl1O4f7HVm6EpTscdDxU+bCXWkfjuRb7Dy9GOtt9JPsX8MBTakzh3
vBgsyi/sN3RqRBcGU40fOoZyfAMT8s1m/uYv52O6IgeuZ/ujbjY=
-----END RSA PRIVATE KEY-----
closed
Creds:
- RSA private key
Bandit Level 17 → Level 18
Level Goal
There are 2 files in the homedirectory: passwords.old and passwords.new. The password for the next level is in passwords.new and is the only line that has been changed between passwords.old and passwords.new
NOTE: if you have solved this level and see ‘Byebye!’ when trying to log into bandit18, this is related to the next level, bandit19
Commands you may need to solve this level
cat, grep, ls, diff
Solution
First, let’s retrieve the private RSA key from the previous level and use it to connect to the next level:
bandit16@bandit:~$ cd /tmp
bandit16@bandit:/tmp$ mkdir screamingwatermelon
bandit16@bandit:/tmp$ cd screamingwatermelon
bandit16@bandit:/tmp/screamingwatermelon$ ls
bandit16@bandit:/tmp/screamingwatermelon$ echo "-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvmOkuifmMg6HL2YPIOjon6iWfbp7c3jx34YkYWqUH57SUdyJ[...]" > id_rsa
bandit16@bandit:/tmp/screamingwatermelon$ chmod 600 id_rsa
bandit16@bandit:/tmp/screamingwatermelon$ ssh -i id_rsa bandit17@localhost
For this challenge, the only new command in the recommended commands is diff
, let’s check it out:
bandit17@bandit:~$ diff --help
Usage: diff [OPTION]... FILES
Compare FILES line by line.
Right, so we just need to invoke it with several files:
bandit17@bandit:~$ diff passwords.old passwords.new
42c42
< hlbSBPAWJmL6WFDb06gpTx1pPButblOA
---
> kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
Creds:
ssh<EMAIL_ADDRESS>-p 2220
kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
Bandit Level 18 → Level 19
Level Goal
The password for the next level is stored in a file readme in the homedirectory. Unfortunately, someone has modified .bashrc to log you out when you log in with SSH.
Commands you may need to solve this level
ssh, ls, cat
Solution
$ ssh<EMAIL_ADDRESS>-p 2220
Byebye !
Connection to bandit.labs.overthewire.org closed.
!!! How rude, I haven’t even got time to do anything on the server!
So, someone is messing around with .bashrc huh? Let’s spawn plain old /bin/sh
instead of the default /bin/bash
then:
bandit ❯ ssh<EMAIL_ADDRESS>-p 2220 /bin/sh
This is a OverTheWire game server. More information on http://www.overthewire.org/wargames
<EMAIL_ADDRESS>password:
ls
readme
cat readme
IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x
Creds:
ssh<EMAIL_ADDRESS>-p 2220
IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x
Bandit Level 19 → Level 20
Level Goal
To gain access to the next level, you should use the setuid binary in the homedirectory. Execute it without arguments to find out how to use it. The password for this level can be found in the usual place (/etc/bandit_pass), after you have used the setuid binary.
Helpful Reading Material
Solution
bandit19@bandit:~$ ls
bandit20-do
bandit19@bandit:~$ ./bandit20-do
Run a command as another user.
Example: ./bandit20-do id
bandit19@bandit:~$ ./bandit20-do id
uid=11019(bandit19) gid=11019(bandit19) euid=11020(bandit20) groups=11019(bandit19)
By using the setuid binary, we can run a command as another user!
We are not authorized to read /etc/bandit_pass/bandit20
but we can use bandit20-do
to do it for us!
bandit19@bandit:~$ ./bandit20-do cat /etc/bandit_pass/bandit20
GbKksEFF4yrVs6il55v6gwY5aVje5f0j
Creds:
ssh<EMAIL_ADDRESS>-p 2220
GbKksEFF4yrVs6il55v6gwY5aVje5f0j
Conclusion
That’s it folks, stay cool ~


Choose your gender
At the second stage, choose the gender as either Male or Female as laid out in the form data. It is imperative to provide the date in order for the web-application to generate the output. Otherwise, the web-appilcation will not respond as expected. The same goes in handy with the appropriate and accurate date and in lign with aforementioned format.


vignettes/qpAdm.Rmd
qpAdm.Rmd
Note: The functionality described in this vignette is still quite experimental. Please keep this in mind when running qpAdm analyses and be extra careful when drawing conclusions. Feedback, criticisms and suggestions on this functionality are more then welcome!
qpAdm model fitting is a complex topic. To navigate it successfuly requires solid knowledge of the \(f\)-statistics theory first introduced by Nick Patterson and colleagues in 2012. As part of our tutorial, we have looked at a very basic overview of the qpAdm-related functionality implemented in admixr. We also talked about the most important resources for learning more about this powerful method pioneered by Iosif Lazaridis in 2015.
Recently, Harney et al. published an exciting new preprint called “Assessing the Performance of qpAdm: A Statistical Tool for Studying Population Admixture”. Before we go any further, I encourage everyone to read it and the superb tutorial/guide available as its supplementary pdf on bioRxiv. There really isn’t a better source of information on how to run and interpret qpAdm analyses.
Please, only attempt to run qpAdm if you have familiarized yoursef with all of the above-mentioned resources. I have had many people ask questions via email (not only about qpAdm but also other topics) to which the only sensible answer was - “you have to read the papers and understand the statistics first.” I know it’s frustrating but there really are no shortcuts here.
If you have ever worked with qpAdm, you are well aware of the intricacies of finding the most suitable set of models that can explain the data. Among other things, we have to make a decision about the number of admixture sources and which populations are the most appropriate surrogates for those source populations (because only rarely we have sampled them directly). Furthermore, we need to carefully choose a number of so called ‘outgroup’ populations (also called ‘references’ or ‘right’ populations, depending on whom you talk to).
The preprint by Harney et al. described an interesting idea to find a set of the most appropriate models (i.e. combinations of source and outgroup populations) which has been sucessfully used in the past. They call the method a “rotating population” strategy.
This approach starts by defining a set of “candidate” populations from which we iteratively sample a defined number of “sources” of ancestry for our “target” population of interest (most commonly two or three sources). After removing the sources from the candidate list, we then define all the remaining populations as “outgroups”. Finally, we iteratively fit qpAdm models for each combination of target, sources and outgroups, extracting \(p\)-values and other statistics of interest. After finishing the exhaustive fitting of source-outgroup combinations, we examine all explored models, selecting those that seem most appropriate.
In admixr, I have implemented a function qpAdm_rotation()
which does exactly what is described paragraph with one additional feature. Given the sensitivity of qpAdm to large numbers of potential outgroups (references), for each combination of sources and outgroups we also explore models for all possible subsets of outgroups. This is to find models which are as small as possible, possibly determining which outgroups are potentially redundant and not actually needed.
Let’s say that we have a target population T and a set of candidates for potential sources and outgroups C = {a, b, c, d, e, f}. Then, if we imagine an iteration of the rotation scheme in which we fixed sources S = {a, b}, we have remaining candidates for outgroups C - S = {c, d, e, f}. The basic implementation of the rotation procedure would simply take C - S as the full set of outgroups and fitted the following model:
However, in admixr, we would evaluate the following models in addition to the model #1:
Therefore, our implementation in qpAdm_rotation()
explores all posible outgroup combinations, allowing us to look for the smallest model (in terms of outgroup size) that can explain our data.
As an example, let’s revisit the problem of estimating the level of Neandertal ancestry in a French person from the main tutorial.  It accepts:
minimize
, determining whether to perform the “minimization” of the outgroup size described in the previous section,fulloutput
specifying whether we want to have all the “ranks” and “subsets/patterns” statistics (see the main tutorial for more information) or if we just want the proportions of ancestry and significance values for individual models (this is the default, i.e. fulloutput = FALSE
).So, let’s say we are interested in finding the proportions of archaic human ancestry in a French individual, and we also want to see what sorts of possible models we could find that match archaic introgression. We would run the following:
models <- qpAdm_rotation( data = snps, target = "French", candidates = c("Dinka", "Mbuti", "Yoruba", "Vindija", "Altai", "Denisova", "Chimp"), minimize = TRUE, nsources = 2, ncores = 2, fulloutput = TRUE )
Here is what the full output looks like:
models #> $proportions #> # A tibble: 336 x 13 #> model target source1 source2 outgroups noutgroups pvalue prop1 prop2 #> <chr> <chr> <chr> <chr> <chr> <int> <dbl> <dbl> <dbl> #> 1 m1 French Dinka Mbuti Yoruba &… 3 3.37e-2 0.757 0.243 #> 2 m2 French Dinka Mbuti Yoruba &… 3 1.38e-2 0.774 0.226 #> 3 m3 French Dinka Mbuti Yoruba &… 3 1.14e-6 0.89 0.11 #> 4 m4 French Dinka Mbuti Yoruba &… 3 6.85e-2 0.781 0.219 #> 5 m5 French Dinka Mbuti Yoruba &… 3 1.49e-5 0.885 0.115 #> 6 m6 French Dinka Mbuti Yoruba &… 3 9.32e-3 0.887 0.113 #> 7 m7 French Dinka Mbuti Vindija … 3 6.70e-2 -8.51 9.51 #> 8 m8 French Dinka Mbuti Vindija … 3 2.71e-1 25.3 -24.3 #> 9 m9 French Dinka Mbuti Vindija … 3 1.61e-1 -187. 188. #> 10 m10 French Dinka Mbuti Altai & … 3 8.10e-2 -30.7 31.7 #> # … with 326 more rows, and 4 more variables: stderr1 <dbl>, stderr2 <dbl>, #> # nsnps_used <dbl>, nsnps_target <dbl> #> #> $ranks #> # A tibble: 672 x 9 #> model target rank df chisq tail dfdiff chisqdiff taildiff #> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 m1 French 1 1 4.51 0.0337 3 -4.51 1 #> 2 m1 French 2 0 0 1 1 4.51 0.0337 #> 3 m10 French 1 1 6.06 0.0138 3 -6.06 1 #> 4 m10 French 2 0 0 1 1 6.06 0.0138 #> 5 m100 French 1 1 23.7 0.00000114 3 -23.7 1 #> 6 m100 French 2 0 0 1 1 23.7 0.00000114 #> 7 m101 French 1 1 3.32 0.0685 3 -3.32 1 #> 8 m101 French 2 0 0 1 1 3.32 0.0685 #> 9 m102 French 1 1 18.8 0.0000149 3 -18.8 1 #> 10 m102 French 2 0 0 1 1 18.8 0.0000149 #> # … with 662 more rows #> #> $subsets #> # A tibble: 1,008 x 12 #> model target source1 source2 pattern wt dof chisq tail prop1 prop2 #> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 m1 French Dinka Mbuti 00 0 1 4.51 3.37e-2 0.757 0.243 #> 2 m1 French Dinka Mbuti 01 1 2 23.6 7.35e-6 1 0 #> 3 m1 French Dinka Mbuti 10 1 2 160. 0. 0 1 #> 4 m10 French Dinka Mbuti 00 0 1 6.06 1.38e-2 0.774 0.226 #> 5 m10 French Dinka Mbuti 01 1 2 23.3 8.91e-6 1 0 #> 6 m10 French Dinka Mbuti 10 1 2 162. 0. 0 1 #> 7 m100 French Dinka Mbuti 00 0 1 23.7 1.14e-6 0.89 0.11 #> 8 m100 French Dinka Mbuti 01 1 2 28.8 5.66e-7 1 0 #> 9 m100 French Dinka Mbuti 10 1 2 285. 0. 0 1 #> 10 m101 French Dinka Mbuti 00 0 1 3.32 6.85e-2 0.781 0.219 #> # … with 998 more rows, and 1 more variable: comment <chr>
We can see a list with three components, as we would expect from any other qpAdm()
run (again, see the manual page and the tutorial for description of all three elements and their meaning). The first column of each component is always named model
- this contains a short identifier of each individual “rotation” run (i.e., a combination target & sources & outgroups). It’s values don’t have any particular meaning - the order is completely arbitrary!, This variable is useful for later filtering and examination of individual models in detail.
Let’s ignore the $ranks
and $subsets
elements for now. We will focus only on the first element, $proportions
which contains the main qpAdm summary.
The $proportions
table shown above contains information about all models, regardless of their plausibility. We can see that by examining the distributions of p-values (column pvalue
) and admixture proportions (columns prop1
and prop2
) of each evaluated model in the figure below.
Notice two things (each dot represents one examined qpAdm model):
library(tidyverse) select(models$proportions, model, pvalue, prop1, prop2) %>% gather(parameter, value, -model) %>% ggplot(aes(parameter, value)) + geom_jitter() + facet_wrap(~ parameter, scales = "free")
To make it easier to narrow down the list of all models, admixr package contains a function qpAdm_filter()
. This function accepts the result of the qpAdm_rotation()
function (either the fulloutput = TRUE
version or the simple data frame with admixture proportions, p-values etc. produced by usingfulloutput = FALSE
) and filters out models with any of the proportions outside of the [0, 1] range and with p-values lower than a specified cutoff (0.05 by default):
# filter out models which can clearly be rejected fits <- qpAdm_filter(models)
We can verify that the filtering worked by visualizing the filtered set of models again. Note that the p-values are distributed across the range of “insigificance” (i.e., “non-rejection”) between [0.05, 1.0]. Furthermore - remember that we originally set out to find combinations of sources-outgroups that model archaic ancestry in a French individual? We can clearly see two tidy clusters of estimated ancestry proportions. One is very small (this corresponds to the Neandertal component in modern humans - we would expect about 2-3% based on many previous analyses) and one large (“modern human” component, non-Neandertal ancestry):
select(fits$proportions, model, pvalue, prop1, prop2) %>% gather(parameter, value, -model) %>% ggplot(aes(parameter, value)) + geom_jitter() + facet_wrap(~ parameter, scales = "free") + coord_cartesian(y = c(0, 1))
Let’s now focus only on the proportions table. We will also ignore a couple of columns for brevity. Note that we are now also completely ignoring p-values because we cannot used those for model selection - they are not statistically meaningful at this stage! Higher p-value never implies higher likelihood of the model. Finally, we order the models based on the size of the outgroup set (smaller models first):
props <- fits$proportions %>% arrange(noutgroups) %>% select(-c(target, noutgroups, stderr1, stderr2, nsnps_used, nsnps_target)) print(props, n = Inf) #> # A tibble: 56 x 7 #> model source1 source2 outgroups pvalue prop1 prop2 #> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> #> 1 m81 Dinka Chimp Mbuti & Yoruba & Vindija 0.963 0.937 0.063 #> 2 m82 Dinka Chimp Mbuti & Yoruba & Altai 0.959 0.942 0.058 #> 3 m56 Dinka Altai Yoruba & Vindija & Chimp 0.898 0.973 0.027 #> 4 m40 Dinka Vindija Yoruba & Altai & Chimp 0.875 0.975 0.025 #> 5 m52 Dinka Altai Mbuti & Vindija & Denisova 0.829 0.977 0.023 #> 6 m183 Yoruba Vindija Mbuti & Altai & Denisova 0.826 0.993 0.007 #> 7 m83 Dinka Chimp Mbuti & Yoruba & Denisova 0.712 0.96 0.04 #> 8 m65 Dinka Denisova Mbuti & Yoruba & Vindija 0.712 0.96 0.04 #> 9 m66 Dinka Denisova Mbuti & Yoruba & Altai 0.672 0.963 0.037 #> 10 m41 Dinka Vindija Yoruba & Denisova & Chimp 0.603 0.97 0.03 #> 11 m57 Dinka Altai Yoruba & Denisova & Chimp 0.603 0.97 0.03 #> 12 m55 Dinka Altai Yoruba & Vindija & Denisova 0.599 0.974 0.026 #> 13 m199 Yoruba Altai Mbuti & Vindija & Denisova 0.562 0.991 0.009 #> 14 m36 Dinka Vindija Mbuti & Altai & Denisova 0.561 0.979 0.021 #> 15 m50 Dinka Altai Mbuti & Yoruba & Denisova 0.550 0.973 0.027 #> 16 m34 Dinka Vindija Mbuti & Yoruba & Denisova 0.548 0.973 0.027 #> 17 m49 Dinka Altai Mbuti & Yoruba & Vindija 0.527 0.975 0.025 #> 18 m33 Dinka Vindija Mbuti & Yoruba & Altai 0.504 0.977 0.023 #> 19 m51 Dinka Altai Mbuti & Yoruba & Chimp 0.460 0.981 0.019 #> 20 m35 Dinka Vindija Mbuti & Yoruba & Chimp 0.459 0.981 0.019 #> 21 m67 Dinka Denisova Mbuti & Yoruba & Chimp 0.448 0.982 0.018 #> 22 m37 Dinka Vindija Mbuti & Altai & Chimp 0.400 0.977 0.023 #> 23 m58 Dinka Altai Vindija & Denisova & Chimp 0.367 0.972 0.028 #> 24 m39 Dinka Vindija Yoruba & Altai & Denisova 0.360 0.977 0.023 #> 25 m233 Yoruba Chimp Mbuti & Altai & Denisova 0.343 0.988 0.012 #> 26 m42 Dinka Vindija Altai & Denisova & Chimp 0.291 0.976 0.024 #> 27 m53 Dinka Altai Mbuti & Vindija & Chimp 0.290 0.974 0.026 #> 28 m38 Dinka Vindija Mbuti & Denisova & Chimp 0.198 0.975 0.025 #> 29 m54 Dinka Altai Mbuti & Denisova & Chimp 0.197 0.975 0.025 #> 30 m232 Yoruba Chimp Mbuti & Vindija & Denisova 0.123 0.986 0.014 #> 31 m202 Yoruba Altai Vindija & Denisova & Chimp 0.0983 0.974 0.026 #> 32 m68 Dinka Denisova Mbuti & Vindija & Altai 0.0809 0.964 0.036 #> 33 m215 Yoruba Denisova Mbuti & Vindija & Altai 0.0788 0.988 0.012 #> 34 m231 Yoruba Chimp Mbuti & Vindija & Altai 0.0751 0.98 0.02 #> 35 m186 Yoruba Vindija Altai & Denisova & Chimp 0.0699 0.978 0.022 #> 36 m84 Dinka Chimp Mbuti & Vindija & Altai 0.0698 0.942 0.058 #> 37 m71 Dinka Denisova Yoruba & Vindija & Altai 0.0687 0.96 0.04 #> 38 m4 Dinka Mbuti Yoruba & Altai & Denisova 0.0685 0.781 0.219 #> 39 m87 Dinka Chimp Yoruba & Vindija & Altai 0.0608 0.941 0.059 #> 40 m74 Dinka Denisova Vindija & Altai & Chimp 0.0507 0.922 0.078 #> 41 m63 Dinka Altai Yoruba & Vindija & Denisova & Chimp 0.788 0.973 0.027 #> 42 m59 Dinka Altai Mbuti & Yoruba & Vindija & Denisova 0.770 0.976 0.024 #> 43 m44 Dinka Vindija Mbuti & Yoruba & Altai & Chimp 0.660 0.976 0.024 #> 44 m47 Dinka Vindija Yoruba & Altai & Denisova & Chimp 0.612 0.976 0.024 #> 45 m43 Dinka Vindija Mbuti & Yoruba & Altai & Denisova 0.607 0.978 0.022 #> 46 m60 Dinka Altai Mbuti & Yoruba & Vindija & Chimp 0.559 0.974 0.026 #> 47 m62 Dinka Altai Mbuti & Vindija & Denisova & Chimp 0.433 0.975 0.025 #> 48 m45 Dinka Vindija Mbuti & Yoruba & Denisova & Chimp 0.426 0.974 0.026 #> 49 m61 Dinka Altai Mbuti & Yoruba & Denisova & Chimp 0.425 0.974 0.026 #> 50 m46 Dinka Vindija Mbuti & Altai & Denisova & Chimp 0.406 0.977 0.023 #> 51 m75 Dinka Denisova Mbuti & Yoruba & Vindija & Altai 0.196 0.962 0.038 #> 52 m91 Dinka Chimp Mbuti & Yoruba & Vindija & Altai 0.194 0.941 0.059 #> 53 m239 Yoruba Chimp Mbuti & Vindija & Altai & Denisova 0.101 0.988 0.012 #> 54 m93 Dinka Chimp Mbuti & Yoruba & Altai & Denisova 0.0786 0.954 0.046 #> 55 m64 Dinka Altai Mbuti & Yoruba & Vindija & Denisov… 0.629 0.974 0.026 #> 56 m48 Dinka Vindija Mbuti & Yoruba & Altai & Denisova … 0.580 0.976 0.024
Fun fact: notice in the table below that there are many models in which the chimpanzee was fitted as a source of ancestry! Interestingly, qpAdm used Chimp to infer archaic human ancestry. This is because you could think of Neandertal ancestry as an “ancestral component” of a modern human genome and the qpAdm rotation procedure therefore concludes that Chimpanzee is not be an unreasonable surrogate for a source population. Of course, we know there are better sources in our candidates set - we have the archaic humans!
filter(props, source1 == "Chimp" | source2 == "Chimp") #> # A tibble: 11 x 7 #> model source1 source2 outgroups pvalue prop1 prop2 #> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> #> 1 m81 Dinka Chimp Mbuti & Yoruba & Vindija 0.963 0.937 0.063 #> 2 m82 Dinka Chimp Mbuti & Yoruba & Altai 0.959 0.942 0.058 #> 3 m83 Dinka Chimp Mbuti & Yoruba & Denisova 0.712 0.96 0.04 #> 4 m233 Yoruba Chimp Mbuti & Altai & Denisova 0.343 0.988 0.012 #> 5 m232 Yoruba Chimp Mbuti & Vindija & Denisova 0.123 0.986 0.014 #> 6 m231 Yoruba Chimp Mbuti & Vindija & Altai 0.0751 0.98 0.02 #> 7 m84 Dinka Chimp Mbuti & Vindija & Altai 0.0698 0.942 0.058 #> 8 m87 Dinka Chimp Yoruba & Vindija & Altai 0.0608 0.941 0.059 #> 9 m91 Dinka Chimp Mbuti & Yoruba & Vindija & Altai 0.194 0.941 0.059 #> 10 m239 Yoruba Chimp Mbuti & Vindija & Altai & Denisova 0.101 0.988 0.012 #> 11 m93 Dinka Chimp Mbuti & Yoruba & Altai & Denisova 0.0786 0.954 0.046
Another interesting fact: notice that the rotating population procedure selected another plausible model characterizing the ancestry of the French individual. However, this of course doesn’t represent Neandertal introgression. What it might possibly represent is left as an exercise for the reader… :)
filter(props, prop1 < 0.9, prop2 < 0.9) #> # A tibble: 1 x 7 #> model source1 source2 outgroups pvalue prop1 prop2 #> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> #> 1 m4 Dinka Mbuti Yoruba & Altai & Denisova 0.0685 0.781 0.219
At this stage of analysis, you would have to decide which of the models produced by qpAdm_filter()
that cannot be immediately rejected are more reasonable than others and why. Possibly based on both some prior knowledge and additional statistics (such as the details information available in the full log output information shown by loginfo()
). You could say that the qpAdm methodology, while rooted in strong statistics, is from a certain point as much art as it is science. Interpreting the results and finding the most appropriate models can be quite a challenge.
Happy modeling and please, do let me know if you discover bugs or missing features. My goal with this tool is to streamline qpAdm model fitting as much as possible and I can do it only with your input.
As a reminder, keep in mind that admixr gives you tools for filtering SNPs and also grouping samples into populations on the fly! You can easily process and group samples before plugging them into qpAdm_rotation()
!
Also note that you can use the function loginfo()
to examine the complete log output of any model by specifying the model identifier. This is helpful not only for debugging purposes but also for cases when you need a particular statistic in the full qpAdm log report which is not currently parsed by admixr:
loginfo(fits, "m40") #> Full output log of qpAdm rotation for model 'm40': #> =================================================== #> #> qpAdm: parameter file: /var/folders/t7/9gjtb6m92flbnp930618vt3r0000gn/T//RtmpsoJhIf/qpAdm__999364930.par #> ### THE INPUT PARAMETERS #> ##PARAMETER NAME: VALUE #> genotypename: /var/folders/t7/9gjtb6m92flbnp930618vt3r0000gn/T//RtmpsoJhIf/snps/snps.geno #> snpname: /var/folders/t7/9gjtb6m92flbnp930618vt3r0000gn/T//RtmpsoJhIf/snps/snps.snp #> indivname: /var/folders/t7/9gjtb6m92flbnp930618vt3r0000gn/T//RtmpsoJhIf/snps/snps.ind #> popleft: /var/folders/t7/9gjtb6m92flbnp930618vt3r0000gn/T//RtmpsoJhIf/qpAdm__999364930.popleft #> popright: /var/folders/t7/9gjtb6m92flbnp930618vt3r0000gn/T//RtmpsoJhIf/qpAdm__999364930.popright #> allsnps: YES #> summary: YES #> details: YES #> ## qpAdm version: 1201 #> seed: 414097275 #> #> left pops: #> French #> Dinka #> Vindija #> #> right pops: #> Yoruba #> Altai #> Chimp #> #> 0 French 1 #> 1 Dinka 1 #> 2 Vindija 1 #> 3 Yoruba 1 #> 4 Altai 1 #> 5 Chimp 1 #> jackknife block size: 0.050 #> snps: 500000 indivs: 6 #> number of blocks for block jackknife: 547 #> ## ncols: 500000 #> coverage: French 499434 #> coverage: Dinka 499362 #> coverage: Vindija 497544 #> coverage: Yoruba 499246 #> coverage: Altai 497729 #> coverage: Chimp 491273 #> Effective number of blocks: 490.290 #> numsnps used: 500000 #> codimension 1 #> f4info: #> f4rank: 1 dof: 1 chisq: 0.025 tail: 0.875038438 dofdiff: 3 chisqdiff: -0.025 taildiff: 1 #> B: #> scale 1.000 #> Altai 1.301 #> Chimp 0.554 #> A: #> scale 15.252 #> Dinka -0.036 #> Vindija 1.414 #> #> #> full rank #> f4info: #> f4rank: 2 dof: 0 chisq: 0.000 tail: 1 dofdiff: 1 chisqdiff: 0.025 taildiff: 0.875038438 #> B: #> scale 421.013 10.787 #> Altai -1.293 1.301 #> Chimp -0.574 0.554 #> A: #> scale 1.414 1.414 #> Dinka 1.414 0.000 #> Vindija 0.000 1.414 #> #> #> best coefficients: 0.975 0.025 #> Jackknife mean: 0.975467965 0.024532035 #> std. errors: 0.005 0.005 #> #> error covariance (* 1,000,000) #> 24 -24 #> -24 24 #> #> #> summ: French 2 0.875038 0.975 0.025 24 -24 24 #> #> fixed pat wt dof chisq tail prob #> 00 0 1 0.025 0.875038 0.975 0.025 #> 01 1 2 24.294 5.30367e-06 1.000 0.000 #> 10 1 2 23181.059 0 0.000 1.000 #> best pat: 00 0.875038 - - #> best pat: 01 5.30367e-06 chi(nested): 24.269 p-value for nested model: 8.37552e-07 #> #> coeffs: 0.975 0.025 #> #> ## dscore:: f_4(Base, Fit, Rbase, right2) #> ## genstat:: f_4(Base, Fit, right1, right2) #> #> details: Dinka Altai -0.003070 -4.407893 #> details: Vindija Altai 0.120642 146.515551 #> dscore: Altai f4: -0.000037 Z: -0.053286 #> #> details: Dinka Chimp -0.001363 -2.294880 #> details: Vindija Chimp 0.051327 77.922651 #> dscore: Chimp f4: -0.000071 Z: -0.121462 #> #> gendstat: Yoruba Altai -0.053 #> gendstat: Yoruba Chimp -0.121 #> gendstat: Altai Chimp -0.086 #> #> ##end of qpAdm: 3.549 seconds cpu 0.000 Mbytes in use


Home
Team
User manual
Download
Installation
Data
Progress
Discovery
Team
Meet us.
Gianluca Venturini
Matteo Palvarini
Krishna Bharadwaj


Tk::MarkdownTk - a Tk::Markdown with tk widget tag support
Version 0.07
use Tk;
use Tk::MarkdownTk;
my $mw = new MainWindow();
my $mdt = $mw->MarkdownTk();
$mdt->insert(q{
some markdown here
with tags like this: <Tk::Button -text="Click me!">
});
Whenever insert is called on the MarkdownTk, some translation is done on the text in order to diplay it nicely as markdown. Tables are reformatted (if the line starts with a bar) and headers are tagged with different fonts.
This module is currently under development and there's plenty to do, e.g. links, images, etc.
In MarkdownTk, html-ish tags are also transformed into Tk widgets.
This is called internally. It parses out HTML-like tags that define Widgets to be drawn in the text.
eg
<Tk::Button -text="Click Me">
Also, perl can be run from the document... a Tk::Markdown allows <% %> which is run prior to insertion (good for formatting) but Tk::MarkdownTk adds running perl from <? ?>, which gets replaced inline, after insertion. This is good for adding named subs in the same namespace as the buttons and other tk widgets added to the text area. Eg:
<Tk::Button -text="Click me" -command="run_this">
<? sub run_this { print "Hello, world!\n"; } ?>
So remember:
% formatted
? subs
A helper function for TransformTk.
This copied directly from Tk::ROText
This is copied directly from Tk::ROText.
This is copied and modified from Tk::ROText. The modification is the addition of a call to setDefaultStyles. That's all.
Copied and adapted from Tk::ROText
jimi, <jimi at webu.co.uk>
Please report any bugs or feature requests to
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Tk-MarkdownTk. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.bug-tk-markdowntk at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc Tk::MarkdownTk
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
Copyright 2013 jimi.
This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at:
http://www.perlfoundation.org/artistic_license_2_0
Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license.
If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license.
This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder.
This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed.
Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.  UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Step 1
Hello there, Let's play a game.
Start
Step 2
Would you rather
live one life that lasts 1,000 years?
live 10 lives that last 100 years each?
Next
Step 3
Check your email for the game results.
Done!
ReRun


nips nips2004 nips2004-163 nips2004-163-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Sajama Sajama, Alon Orlitsky
Abstract: We present a semi-parametric latent variable model based technique for density modelling, dimensionality reduction and visualization. Unlike previous methods, we estimate the latent distribution non-parametrically which enables us to model data generated by an underlying low dimensional, multimodal distribution. In addition, we allow the components of latent variable models to be drawn from the exponential family which makes the method suitable for special data types, for example binary or count data. Simulations on real valued, binary and count data show favorable comparison to other related schemes both in terms of separating different populations and generalization to unseen samples. 1
[1] M. Tipping and C. Bishop. Probabilistic principal component analysis. Journal of the Royal Statistical Society, Series B, 61(3):611–622, 1999.
[2] David J. Bartholomew and Martin Knott. Latent variable models and Factor analysis, volume 7 of Kendall’s Library of Statistics. Oxford University Press, 2nd edition, 1999.
[3] A. Kaban and M. Girolami. A combined latent class and trait model for the analysis and visualization of discrete data. IEEE Transaction on Pattern Analysis and Machine Intelligence, 23(8):859–872, August 2001.
[4] M. Collins, S. Dasgupta, and R. E. Schapire. A generalization of principal components analysis to the exponential family. In Advances in Neural Information Processing Systems 14, 2002.
[5] P. McCullagh and J. A. Nelder. Generalized Linear Models. Monographs on Statistics and Applied Probability. Chapman and Hall, 1983.
[6] B. G. Lindsay. The geometry of mixture likelihoods : A general theory. The Annals of Statistics, 11(1):86–04, 1983.
[7] Sajama and A. Orlitsky. Semi-parametric exponential family PCA : Reducing dimensions via non-parametric latent distribution estimation. Technical Report CS2004-0790, University of California at San Diego, http://cwc.ucsd.edu/∼ sajama, 2004.
[8] C. F. J. Wu. On the convergence properties of the EM algorithm. Annals of Statistics, 11(1):95– 103, 1983.
[9] J. Kiefer and J. Wolfowitz. Consistency of the maximum likelihood estimator in the presence of in£nitely many incidental parameters. The Annals of Mathematical Statistics, 27:887–906, 1956.
[10] R. Tibshirani. Principal curves revisited. Statistics and Computation, 2:183–190, 1992.


Pre-Order Only - Offer Ends Date: 30th November 2018 at 11:59 PST
Pre-Order Discount Code: PREVALANO
Code Less, Build More & Save Time
Valano allows you build your projects by just copying & pasting code.

Beginner-Friendly Code
Getting started with Valano Bootstrap Admin Dashboard will be extremely easy, whether you are a beginner or an expert developer.
All you need is basic Bootstrap 4 knowledge and you are set.
Required skills to use Valano:
- HTML - Beginner and above level
- CSS - Beginner and above level
- jQuery - Beginner and above level
- Bootstrap 4 - Beginner and above level
- Your Imagination - Any level!
Easy Integration Into Your Legacy Projects
With Valano, you can redesign your old CRM, CMS, Support Systems, Inventory Management Systems, Accounting Software or any old/legacy dashboards. Just create a simple wireframe with the design & layout that you like, then integrate your server logic.
You do not need to learn new HTML structures or CSS classes*. As long as you are comfortable with Bootstrap 4, you will be able to work with Valano.
*NOTE: some new optional classes are added to enhance Valano's options.
Features
At Launch
Charts, Profile, Task List, Inbox, Task Manager, Calendar, Timeline, Gallery, eCommerce, Contacts, more
After Launch
Blog, Contact Details, Projects, Social Page, FAQs Page, File Manager... lots more.
Make a Quick Feature Request
Base5Builder Testimonials
Here are some of the reviews and testimonials from our other products from actual customers and clients.
FAQs - Frequently Asked Questions
When will Valano Bootstrap Admin Dashboard be released?
Valano will be released between 1 to 7 days after 8th September 2018 at 11:59 PST. We will email you once it is released.
How can I purchase Valano?
That's the easiest part. Just click on which license you want to pre-order above, then click the "Checkout" button on the next page (your cart). Follow the quick steps on the checkout page then you'll be taken to our payment providers page (2Checkoout).
What payment options do you provide?
You can pay with either PayPal or any Credit Card. Once you follow the checkout steps and are taken to the payment providers page (2Checkoout), you will be able to select whether to pay by Credit Card or Paypal at the bottom of the page.
What happens once I purchase Valano?
We will send you a confirmation email that we've received your payment. And you will be added to the list of customers that pre-ordered Valano.
Once Valano is released, we will email you with the link to download it. You will also be able to download Valano from your account page on base5builder.com.
Do you offer refunds?
If you request a refund before Valano is released, then we will refund your money.
However, once Valano is released, we offer refunds only if it does not function as promised/advertised and our support team isn't able to fix the issues in a timely manner.
If you need a refund just email support [at] base5builder [dot] com or contact us through our Support Center. Please provide your Order ID, the email and name you used in your order.
What is the Single License?
- You can only use this item in a single (one) installation/end-product
- You can use this item for your personal project or your client's project
- You cannot, either as-is or modified, redistribute, resell, lease, license, sub-license or offer this item to any third party. This includes uploading the item to another website, marketplace or media-sharing tool, and offering it as a separate attachment from any of your work.
- If the item contains licensed components, those components must only be used within the item and you cannot not extract and use them on their own.
If you are unsure of whether your intended use is allowed just email support [at] base5builder [dot] com or contact us through our Support Center.
What is the Multiple License?
- You can use this item in as many installations/end-products as you wish.
- You can use this item for your personal project or your client's project
- You cannot, either as-is or modified, redistribute, resell, lease, license, sub-license or offer this item to any third party. This includes uploading the item to another website, marketplace or media-sharing tool, and offering it as a separate attachment from any of your work.
- If the item contains licensed components, those components must only be used within the item and you cannot not extract and use them on their own.
If you are unsure of whether your intended use is allowed just email support [at] base5builder [dot] com or contact us through our Support Center.
Can I request new features?
Yes, you can! The more, the better! Use our Quick Request form and enter your feature request into this form, then send.
NOTE: Even if you make a request during the pre-order period, you will still have to purchase Valano before the deadline to benefit from the pre-order discount.
Are you guys available to freelance or custom work?
Yes, we are. Just tell us what you need.
You can use the Live Chat icon at the bottom right. Even if we are not online we will still receive your message and send you an email (don't forget to enter your email).
You can also email us support [at] base5builder [dot] com or contact us through our Support Center.
I have a question that hasn't been addressed. How do I get my questions answered?
You can contact us using any of the following methods:
-
You can use the Live Chat icon at the bottom right. Even if we are not online we will still receive your message and send you an email (don't forget to enter your email).
-
You can also email us support [at] base5builder [dot] com or contact us through our Support Center.


| N | = | R* | ∙ | fp | ∙ | ne | ∙ | fl | ∙ | fi | ∙ | fc | ∙ | L | ||
N: The number of civilisations in our galaxy with which communication might be possible.
R*: The average rate of star formation in our galaxy.
fp: The fraction of stars which have planets.
ne: The average number of potentially life-supporting planets per star which has planets.
fl: The fraction of potentially life-supporting planets on which life does arise.
fi: The fraction of life-hosting planets on which intelligent life arises.
fc: The fraction of civilisations which exhibit a detectable technosignature.
L: The length of time for which these civilisations exhibit a detectable technosignature.


| Author | Matthew Schinkel - borntechi.com, copyright © 2009, all rights reserved. |
| Adapted-by | |
| Compiler | >=2.4n |
The debug library has all the same functions as the print library, but the user defines constants to turn on and off this library and users debug levels.
The jallib print library
var bit debug_lvl_11 at debug_bits : 11
const DEBUG_13 = 13
var bit debug_lvl_1 at debug_bits : 1
const DEBUG_14 = 14
var bit debug_lvl_9 at debug_bits : 9
var bit debug_lvl_10 at debug_bits : 10
const DEBUG_2 = 2
var bit debug_lvl_4 at debug_bits : 4
const DEBUG_0 = 0
const DEBUG_8 = 8
var bit debug_lvl_8 at debug_bits : 8
const DEBUG_7 = 7
var bit debug_lvl_2 at debug_bits : 2
var bit debug_lvl_6 at debug_bits : 6
const DEBUG_15 = 15
var bit debug_lvl_0 at debug_bits : 0
var word debug_bits = 0
const DEBUG_10 = 10
const DEBUG_12 = 12
const DEBUG_6 = 6
var bit debug_lvl_7 at debug_bits : 7
const DEBUG_1 = 1
const DEBUG_5 = 5
var bit debug_lvl_3 at debug_bits : 3
var bit debug_lvl_5 at debug_bits : 5
var bit debug_lvl_15 at debug_bits : 15
var bit debug_lvl_14 at debug_bits : 14
var bit debug_lvl_12 at debug_bits : 12
var bit debug_lvl_13 at debug_bits : 13
const DEBUG_3 = 3
const DEBUG_9 = 9
const DEBUG_11 = 11
const DEBUG_4 = 4
debug_crlf(word in debug_level)
debug_byte_hex(word in debug_level,byte in data)
debug_word_binary(word in debug_level,word in data)
debug_bit_10(word in debug_level,bit in data)
debug_nibble_binary(word in debug_level,byte in data)
debug_word_hex(word in debug_level,word in data)
debug_sword_dec(word in debug_level,sword in data)
debug_dword_hex(word in debug_level,dword in data)
debug_word_dec(word in debug_level,word in data)
debug_sbyte_dec(word in debug_level,sbyte in data)
debug_sdword_dec(word in debug_level,sdword in data)
debug_sdword_hex(word in debug_level,sdword in data)
debug_dword_dec(word in debug_level,dword in data)
debug_byte_dec(word in debug_level,byte in data)
debug_dword_binary(word in debug_level,dword in data)
debug_bit_truefalse(word in debug_level,bit in data)
debug_byte_binary(word in debug_level,byte in data)
debug_char(word in debug_level,byte in character)
debug_string(word in debug_level,byte in str_in[])
debug_bit_highlow(word in debug_level,bit in data)
var bit debug_lvl_11 at debug_bits : 11
No documentation found
const DEBUG_13 = 13
No documentation found
var bit debug_lvl_1 at debug_bits : 1
No documentation found
const DEBUG_14 = 14
No documentation found
var bit debug_lvl_9 at debug_bits : 9
No documentation found
var bit debug_lvl_10 at debug_bits : 10
No documentation found
const DEBUG_2 = 2
No documentation found
var bit debug_lvl_4 at debug_bits : 4
No documentation found
const DEBUG_0 = 0
you can use these instead of numbers as input level. makes it easy for you to change levels in code with your editor's "replace all"
const DEBUG_8 = 8
No documentation found
var bit debug_lvl_8 at debug_bits : 8
No documentation found
const DEBUG_7 = 7
No documentation found
var bit debug_lvl_2 at debug_bits : 2
No documentation found
var bit debug_lvl_6 at debug_bits : 6
No documentation found
const DEBUG_15 = 15
No documentation found
var bit debug_lvl_0 at debug_bits : 0
No documentation found
var word debug_bits = 0
debug enable/disable bits
const DEBUG_10 = 10
No documentation found
const DEBUG_12 = 12
No documentation found
const DEBUG_6 = 6
No documentation found
var bit debug_lvl_7 at debug_bits : 7
No documentation found
const DEBUG_1 = 1
No documentation found
const DEBUG_5 = 5
No documentation found
var bit debug_lvl_3 at debug_bits : 3
No documentation found
var bit debug_lvl_5 at debug_bits : 5
No documentation found
var bit debug_lvl_15 at debug_bits : 15
No documentation found
var bit debug_lvl_14 at debug_bits : 14
No documentation found
var bit debug_lvl_12 at debug_bits : 12
No documentation found
var bit debug_lvl_13 at debug_bits : 13
No documentation found
const DEBUG_3 = 3
No documentation found
const DEBUG_9 = 9
No documentation found
const DEBUG_11 = 11
No documentation found
const DEBUG_4 = 4
No documentation found
debug_crlf(word in debug_level)
No documentation found
debug_byte_hex(word in debug_level,byte in data)
No documentation found
debug_word_binary(word in debug_level,word in data)
No documentation found
debug_bit_10(word in debug_level,bit in data)
No documentation found
debug_nibble_binary(word in debug_level,byte in data)
No documentation found
debug_word_hex(word in debug_level,word in data)
No documentation found
debug_sword_dec(word in debug_level,sword in data)
No documentation found
debug_dword_hex(word in debug_level,dword in data)
No documentation found
debug_word_dec(word in debug_level,word in data)
No documentation found
debug_sbyte_dec(word in debug_level,sbyte in data)
No documentation found
debug_sdword_dec(word in debug_level,sdword in data)
No documentation found
debug_sdword_hex(word in debug_level,sdword in data)
No documentation found
debug_dword_dec(word in debug_level,dword in data)
No documentation found
debug_byte_dec(word in debug_level,byte in data)
No documentation found
debug_dword_binary(word in debug_level,dword in data)
No documentation found
debug_bit_truefalse(word in debug_level,bit in data)
No documentation found
debug_byte_binary(word in debug_level,byte in data)
No documentation found
debug_char(word in debug_level,byte in character)
No documentation found
debug_string(word in debug_level,byte in str_in[])
No documentation found
debug_bit_highlow(word in debug_level,bit in data)
No documentation found
| 18f4550 | 18f4550_debug.jal |
| 18f4620 | 18f4620_network_udp_server.jal |
| 18f4620 | 18f4620_debug.jal |
| 18f4620 | 18f4620_network_webserver_enc28j60.jal |
| 18f4620 | 18f4620_network_udp_client.jal |
| 18f4620 | 18f4620_network_all_in_one.jal |
| 18f4620 | 18f4620_network_slip_isr_ping_udp.jal |
| 18f4620 | 18f4620_network_tcp_client.jal |
| 18f4620 | 18f4620_network_tcp_server.jal |
| 18f4620 | 18f4620_network_ping.jal |
| 18f67j50 | 18f67j50_usb_msd_sd_card.jal |
| 18f67j50 | 18f67j50_usb_msd_pata_hard_disk.jal |
| 18f67j50 | 18f67j50_debug.jal |