text:
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

#include "swift/AST/ASTPrinter.h"
#include "swift/AST/Decl.h"
#include "swift/AST/NameLookup.h"
#include "swift/Basic/SourceManager.h"
#include "swift/Frontend/Frontend.h"
#include "swift/Frontend/PrintingDiagnosticConsumer.h"
#include "swift/IDE/CommentConversion.h"
#include "swift/IDE/Utils.h"
#include "swift/Markup/XMLUtils.h"
#include "swift/Subsystems.h"

#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
#include "clang/Basic/Module.h"
#include "clang/Index/USRGeneration.h"
#include "clang/Lex/Lexer.h"
#include "clang/Basic/CharInfo.h"

#include "llvm/Support/MemoryBuffer.h"

#include <numeric>

using namespace swift;
using namespace swift::ide;

Optional<std::pair<unsigned, unsigned>>
swift::ide::parseLineCol(StringRef LineCol) {
  unsigned Line, Col;
  size_t ColonIdx = LineCol.find(':');
  if (ColonIdx == StringRef::npos) {
    llvm::errs() << "wrong pos format, it should be '<line>:<column>'\n";
    return None;
  }
  if (LineCol.substr(0, ColonIdx).getAsInteger(10, Line)) {
    llvm::errs() << "wrong pos format, it should be '<line>:<column>'\n";
    return None;
  }
  if (LineCol.substr(ColonIdx+1).getAsInteger(10, Col)) {
    llvm::errs() << "wrong pos format, it should be '<line>:<column>'\n";
    return None;
  }

  if (Line == 0 || Col == 0) {
    llvm::errs() << "wrong pos format, line/col should start from 1\n";
    return None;
  }

  return std::make_pair(Line, Col);
}

void XMLEscapingPrinter::printText(StringRef Text) {
  swift::markup::appendWithXMLEscaping(OS, Text);
}

void XMLEscapingPrinter::printXML(StringRef Text) {
  OS << Text;
}

SourceManager &NameMatcher::getSourceMgr() const {
  return SrcFile.getASTContext().SourceMgr;
}

std::vector<ResolvedLoc> NameMatcher::resolve(ArrayRef<UnresolvedLoc> Locs, ArrayRef<Token> Tokens) {

  // Note the original indices and sort them in reverse source order
  std::vector<size_t> MapToOriginalIndex(Locs.size());
  std::iota(MapToOriginalIndex.begin(), MapToOriginalIndex.end(), 0);
  std::sort(MapToOriginalIndex.begin(), MapToOriginalIndex.end(),
            [this, Locs](size_t first, size_t second) {
              return first != second && !getSourceMgr()
                .isBeforeInBuffer(Locs[first].Loc, Locs[second].Loc);
            });

  // Add the locs themselves
  LocsToResolve.clear();
  std::transform(MapToOriginalIndex.begin(), MapToOriginalIndex.end(),
                 std::back_inserter(LocsToResolve),
                 [&](size_t index){ return Locs[index]; });

  InactiveConfigRegionNestings = 0;
  SelectorNestings = 0;
  TokensToCheck = Tokens;
  ResolvedLocs.clear();
  SrcFile.walk(*this);
  checkComments();

  // handle any unresolved locs past the end of the last AST node or comment
  std::vector<ResolvedLoc> Remaining(Locs.size() - ResolvedLocs.size(), {
    ASTWalker::ParentTy(), CharSourceRange(), {}, LabelRangeType::None,
    /*isActice*/true, /*isInSelector*/false});
  ResolvedLocs.insert(ResolvedLocs.end(), Remaining.begin(), Remaining.end());

  // return in the original order
  std::vector<ResolvedLoc> Ordered(ResolvedLocs.size());
  for(size_t Index = 0; Index < ResolvedLocs.size(); ++Index) {
    size_t Flipped = ResolvedLocs.size() - 1 - Index;
    Ordered[MapToOriginalIndex[Flipped]] = ResolvedLocs[Index];
  }
  return Ordered;
}

static std::vector<CharSourceRange> getLabelRanges(const ParameterList* List,
                                                   const SourceManager &SM) {
  std::vector<CharSourceRange> LabelRanges;
  for (ParamDecl *Param: *List) {
    if (Param->isImplicit())
      continue;

    SourceLoc NameLoc = Param->getArgumentNameLoc();
    SourceLoc ParamLoc = Param->getNameLoc();
    size_t NameLength;
    if (NameLoc.isValid()) {
      LabelRanges.push_back(Lexer::getCharSourceRangeFromSourceRange(
                                SM, SourceRange(NameLoc, ParamLoc)));
    } else {
      NameLoc = ParamLoc;
      NameLength = Param->getNameStr().size();
      LabelRanges.push_back(CharSourceRange(NameLoc, NameLength));
    }
  }
  return LabelRanges;
}

static std::vector<CharSourceRange> getEnumParamListInfo(SourceManager &SM,
                                                         ParameterList *PL) {
  std::vector<CharSourceRange> LabelRanges;
  for (ParamDecl *Param: *PL) {
    if (Param->isImplicit())
      continue;

    SourceLoc LabelStart;
    if (auto *repr = Param->getTypeRepr())
      LabelStart = repr->getLoc();
    SourceLoc LabelEnd(LabelStart);

    if (Param->getNameLoc().isValid()) {
      LabelStart = Param->getNameLoc();
    }
    LabelRanges.push_back(CharSourceRange(SM, LabelStart, LabelEnd));
  }
  return LabelRanges;
}

bool NameMatcher::handleCustomAttrs(Decl *D) {
  // CustomAttrs of non-param VarDecls are handled when this method is called
  // on their containing PatternBindingDecls (see below).
  if (isa<VarDecl>(D) && !isa<ParamDecl>(D))
    return true;

  if (auto *PBD = dyn_cast<PatternBindingDecl>(D)) {
    if (auto *SingleVar = PBD->getSingleVar()) {
      D = SingleVar;
    } else {
        return true;
    }
  }

  for (auto *customAttr : D->getAttrs().getAttributes<CustomAttr, true>()) {
    if (shouldSkip(customAttr->getRangeWithAt()))
      continue;
    auto *Arg = customAttr->getArg();
    if (auto *Repr = customAttr->getTypeLoc().getTypeRepr()) {
      // Note the associated call arguments of the semantic initializer call
      // in case we're resolving an explicit initializer call within the
      // CustomAttr's type, e.g. on `Wrapper` in `@Wrapper(wrappedValue: 10)`.
      SWIFT_DEFER { CustomAttrArg = None; };
      if (Arg && !Arg->isImplicit())
        CustomAttrArg = {Repr->getLoc(), Arg};
      if (!Repr->walk(*this))
        return false;
    }
    if (Arg && !Arg->isImplicit()) {
      if (!Arg->walk(*this))
        return false;
    }
  }
  return !isDone();
}

bool NameMatcher::walkToDeclPre(Decl *D) {
  // Handle occurrences in any preceding doc comments
  RawComment R = D->getRawComment();
  if (!R.isEmpty()) {
    for(SingleRawComment C: R.Comments) {
      while(!shouldSkip(C.Range))
        tryResolve(ASTWalker::ParentTy(), nextLoc());
    }
  }

  // FIXME: Even implicit Decls should have proper ranges if they include any
  // non-implicit children (fix implicit Decls created for lazy vars).
  if (D->isImplicit())
    return !isDone();

  if (shouldSkip(D->getSourceRangeIncludingAttrs()))
    return false;

  if (!handleCustomAttrs(D))
    return false;

  if (auto *ICD = dyn_cast<IfConfigDecl>(D)) {
    for (auto Clause : ICD->getClauses()) {
      if (!Clause.isActive)
        ++InactiveConfigRegionNestings;

      for (auto Member : Clause.Elements) {
        Member.walk(*this);
      }

      if (!Clause.isActive) {
        assert(InactiveConfigRegionNestings > 0);
        --InactiveConfigRegionNestings;
      }
    }
    return false;
  } else if (AbstractFunctionDecl *AFD = dyn_cast<AbstractFunctionDecl>(D)) {
    std::vector<CharSourceRange> LabelRanges;
    if (AFD->getNameLoc() == nextLoc()) {
      auto ParamList = AFD->getParameters();
      LabelRanges = getLabelRanges(ParamList, getSourceMgr());
    }
    tryResolve(ASTWalker::ParentTy(D), D->getLoc(), LabelRangeType::Param,
               LabelRanges);
  } else if (SubscriptDecl *SD = dyn_cast<SubscriptDecl>(D)) {
    tryResolve(ASTWalker::ParentTy(D), D->getLoc(), LabelRangeType::NoncollapsibleParam,
               getLabelRanges(SD->getIndices(), getSourceMgr()));
  } else if (EnumElementDecl *EED = dyn_cast<EnumElementDecl>(D)) {
    if (auto *ParamList = EED->getParameterList()) {
      auto LabelRanges = getEnumParamListInfo(getSourceMgr(), ParamList);
      tryResolve(ASTWalker::ParentTy(D), D->getLoc(), LabelRangeType::CallArg,
                 LabelRanges);
    } else {
      tryResolve(ASTWalker::ParentTy(D), D->getLoc());
    }
  } else if (ImportDecl *ID = dyn_cast<ImportDecl>(D)) {
    for(const ImportDecl::AccessPathElement &Element: ID->getFullAccessPath()) {
      tryResolve(ASTWalker::ParentTy(D), Element.second);
      if (isDone())
        break;
    }
  } else if (isa<ValueDecl>(D) || isa<ExtensionDecl>(D) ||
             isa<PrecedenceGroupDecl>(D)) {
    tryResolve(ASTWalker::ParentTy(D), D->getLoc());
  }
  return !isDone();
}

bool NameMatcher::walkToDeclPost(Decl *D) {
  return !isDone();
}

std::pair<bool, Stmt *> NameMatcher::walkToStmtPre(Stmt *S) {
  // FIXME: Even implicit Stmts should have proper ranges that include any
  // non-implicit Stmts (fix Stmts created for lazy vars).
  if (!S->isImplicit() && shouldSkip(S->getSourceRange()))
    return std::make_pair(false, isDone()? nullptr : S);
  return std::make_pair(true, S);
}

Stmt *NameMatcher::walkToStmtPost(Stmt *S) {
  if (isDone())
    return nullptr;
  return S;
}

std::pair<bool, Expr*> NameMatcher::walkToExprPre(Expr *E) {
  if (shouldSkip(E))
    return std::make_pair(false, isDone()? nullptr : E);

  if (isa<ObjCSelectorExpr>(E)) {
      ++SelectorNestings;
  }

  // only match name locations of expressions apparent in the original source
  if (!E->isImplicit()) {
    // Try to resolve against the below kinds *before* their children are
    // visited to ensure visitation happens in source order.
    switch (E->getKind()) {
      case ExprKind::UnresolvedMember: {
        auto UME = cast<UnresolvedMemberExpr>(E);
        tryResolve(ASTWalker::ParentTy(E), UME->getNameLoc(), UME->getArgument(), !UME->getArgument());
      } break;
      case ExprKind::DeclRef: {
        auto DRE = cast<DeclRefExpr>(E);
        tryResolve(ASTWalker::ParentTy(E), DRE->getNameLoc(), nullptr, true);
        break;
      }
      case ExprKind::UnresolvedDeclRef: {
        auto UDRE = cast<UnresolvedDeclRefExpr>(E);
        tryResolve(ASTWalker::ParentTy(E), UDRE->getNameLoc(), nullptr, true);
        break;
      }
      case ExprKind::StringLiteral:
        // Handle multple locations in a single string literal
        do {
          tryResolve(ASTWalker::ParentTy(E), nextLoc());
        } while (!shouldSkip(E));
        break;
      case ExprKind::Subscript: {
        auto SubExpr = cast<SubscriptExpr>(E);
        // visit and check in source order
        if (!SubExpr->getBase()->walk(*this))
          return {false, nullptr};

        auto Labels = getCallArgLabelRanges(getSourceMgr(), SubExpr->getIndex(),
                                            LabelRangeEndAt::BeforeElemStart);
        tryResolve(ASTWalker::ParentTy(E), E->getLoc(), LabelRangeType::CallArg, Labels);
        if (isDone())
            break;
        if (!SubExpr->getIndex()->walk(*this))
          return {false, nullptr};

        // We already visited the children.
        if (!walkToExprPost(E))
          return {false, nullptr};
        return {false, E};
      }
      case ExprKind::Tuple: {
        TupleExpr *T = cast<TupleExpr>(E);
        // Handle arg label locations (the index reports property occurrences
        // on them for memberwise inits)
        for (unsigned i = 0, e = T->getNumElements(); i != e; ++i) {
          auto Name = T->getElementName(i);
          if (!Name.empty()) {
            tryResolve(ASTWalker::ParentTy(E), T->getElementNameLoc(i));
            if (isDone())
              break;
          }
          if (auto *Elem = T->getElement(i)) {
            if (!Elem->walk(*this))
              return {false, nullptr};
          }
        }
        // We already visited the children.
        if (!walkToExprPost(E))
          return {false, nullptr};
        return {false, E};
      }
      case ExprKind::Binary: {
        BinaryExpr *BinE = cast<BinaryExpr>(E);
        // Visit in source order.
        if (!BinE->getArg()->getElement(0)->walk(*this))
          return {false, nullptr};
        if (!BinE->getFn()->walk(*this))
          return {false, nullptr};
        if (!BinE->getArg()->getElement(1)->walk(*this))
          return {false, nullptr};

        // We already visited the children.
        if (!walkToExprPost(E))
          return {false, nullptr};
        return {false, E};
      }
      default: // ignored
        break;
    }
  }
  return std::make_pair(!isDone(), isDone()? nullptr : E);
}

Expr *NameMatcher::walkToExprPost(Expr *E) {
  if (isDone())
    return nullptr;

  if (!E->isImplicit()) {
    // Try to resolve against the below kinds *after* their children have been
    // visited to ensure visitation happens in source order.
    switch (E->getKind()) {
      case ExprKind::MemberRef:
        tryResolve(ASTWalker::ParentTy(E), E->getLoc());
        break;
      case ExprKind::UnresolvedDot: {
        auto UDE = cast<UnresolvedDotExpr>(E);
        tryResolve(ASTWalker::ParentTy(E), UDE->getNameLoc(), nullptr, true);
        break;
      }
      default:
        break;
    }
  }

  if (isa<ObjCSelectorExpr>(E)) {
    assert(SelectorNestings > 0);
    --SelectorNestings;
  }

  return E;
}

bool NameMatcher::walkToTypeLocPre(TypeLoc &TL) {
  if (isDone() || shouldSkip(TL.getSourceRange()))
    return false;
  return true;
}

bool NameMatcher::walkToTypeLocPost(TypeLoc &TL) {
  return !isDone();
}

bool NameMatcher::walkToTypeReprPre(TypeRepr *T) {
  if (isDone() || shouldSkip(T->getSourceRange()))
    return false;

  if (isa<ComponentIdentTypeRepr>(T)) {
    // If we're walking a CustomAttr's type we may have an associated call
    // argument to resolve with from its semantic initializer.
    if (CustomAttrArg.hasValue() && CustomAttrArg->first == T->getLoc()) {
      tryResolve(ASTWalker::ParentTy(T), T->getLoc(), LabelRangeType::CallArg,
                 getCallArgLabelRanges(getSourceMgr(), CustomAttrArg->second, LabelRangeEndAt::BeforeElemStart));
    } else {
      tryResolve(ASTWalker::ParentTy(T), T->getLoc());
    }
  }
  return !isDone();
}

bool NameMatcher::walkToTypeReprPost(TypeRepr *T) {
  return !isDone();
}

std::pair<bool, Pattern*> NameMatcher::walkToPatternPre(Pattern *P) {
  if (isDone() || shouldSkip(P->getSourceRange()))
    return std::make_pair(false, P);

  tryResolve(ASTWalker::ParentTy(P), P->getStartLoc());
  return std::make_pair(!isDone(), P);
}

bool NameMatcher::checkComments() {
  if (isDone())
    return false;
  TokensToCheck = TokensToCheck.drop_while([this](const Token &tok) -> bool {
    return getSourceMgr().isBeforeInBuffer(tok.getRange().getEnd(), nextLoc());
  });
  if (TokensToCheck.empty())
    return false;

  const Token &next = TokensToCheck.front();
  if (next.is(swift::tok::comment) && next.getRange().contains(nextLoc()) &&
      !next.getText().startswith("///"))
    return tryResolve(ASTWalker::ParentTy(), nextLoc());
  return false;
}

void NameMatcher::skipLocsBefore(SourceLoc Start) {
  while (!isDone() && getSourceMgr().isBeforeInBuffer(nextLoc(), Start)) {
    if (!checkComments()) {
      LocsToResolve.pop_back();
      ResolvedLocs.push_back({ASTWalker::ParentTy(), CharSourceRange(), {},
        LabelRangeType::None, isActive(), isInSelector()});
    }
  }
}

bool NameMatcher::shouldSkip(Expr *E) {
  if (isa<StringLiteralExpr>(E) && Parent.getAsExpr()) {
    // Attempting to get the CharSourceRange from the SourceRange of a
    // StringLiteralExpr that is a segment of an interpolated string gives
    // incorrect ranges. Use the CharSourceRange of the corresponding token
    // instead.

    auto ExprStart = E->getStartLoc();
    auto RemaingTokens = TokensToCheck.drop_while([&](const Token &tok) -> bool {
      return getSourceMgr().isBeforeInBuffer(tok.getRange().getStart(), ExprStart);
    });

    if (!RemaingTokens.empty() && RemaingTokens.front().getLoc() == ExprStart)
      return shouldSkip(RemaingTokens.front().getRange());
  }
  return shouldSkip(E->getSourceRange());
}

bool NameMatcher::shouldSkip(SourceRange Range) {
  return shouldSkip(Lexer::getCharSourceRangeFromSourceRange(getSourceMgr(),
                                                             Range));
}

bool NameMatcher::shouldSkip(CharSourceRange Range) {
  if (isDone())
    return true;
  if (Range.isInvalid())
    return false;

  skipLocsBefore(Range.getStart());
  return isDone() || !Range.contains(nextLoc());
}

SourceLoc NameMatcher::nextLoc() const {
  assert(!LocsToResolve.empty());
  return LocsToResolve.back().Loc;
}

std::vector<CharSourceRange> getSelectorLabelRanges(SourceManager &SM,
                                                    DeclNameLoc NameLoc) {
  SourceLoc Loc;
  std::vector<CharSourceRange> Ranges;
  size_t index = 0;
  while((Loc = NameLoc.getArgumentLabelLoc(index++)).isValid()) {
    CharSourceRange Range = Lexer::getCharSourceRangeFromSourceRange(SM,
                                                                     SourceRange(Loc));
    Ranges.push_back(Range);
  }

  return Ranges;
}

bool NameMatcher::tryResolve(ASTWalker::ParentTy Node, DeclNameLoc NameLoc,
                             Expr *Arg, bool checkParentForLabels) {
  if (NameLoc.isInvalid())
    return false;

  if (NameLoc.isCompound()) {
    auto Labels = getSelectorLabelRanges(getSourceMgr(), NameLoc);
    bool Resolved = tryResolve(Node, NameLoc.getBaseNameLoc(),
                               LabelRangeType::Selector, Labels);
    if (!isDone()) {
      for (auto Label: Labels) {
        if (tryResolve(Node, Label.getStart())) {
          Resolved = true;
          if (isDone())
            break;
        }
      }
    }
    return Resolved;
  }

  if (LocsToResolve.back().ResolveArgLocs) {
    if (Arg)
      return tryResolve(Node, NameLoc.getBaseNameLoc(), LabelRangeType::CallArg,
                        getCallArgLabelRanges(getSourceMgr(), Arg,
                                              LabelRangeEndAt::BeforeElemStart));

    if (checkParentForLabels) {
      if (auto P = dyn_cast_or_null<ApplyExpr>(Parent.getAsExpr())) {
        if (P->getFn() == Node.getAsExpr())
          return tryResolve(Node, NameLoc.getBaseNameLoc(),
                            LabelRangeType::CallArg,
                            getCallArgLabelRanges(getSourceMgr(), P->getArg(),
                                            LabelRangeEndAt::BeforeElemStart));
      }
    }
  }

  return tryResolve(Node, NameLoc.getBaseNameLoc());
}

bool NameMatcher::tryResolve(ASTWalker::ParentTy Node, SourceLoc NameLoc) {
  assert(!isDone());
  return tryResolve(Node, NameLoc, LabelRangeType::None, None);
}

bool NameMatcher::tryResolve(ASTWalker::ParentTy Node, SourceLoc NameLoc,
                             LabelRangeType RangeType,
                             ArrayRef<CharSourceRange> LabelRanges) {
  skipLocsBefore(NameLoc);
  if (isDone())
    return false;

  CharSourceRange Range = Lexer::getCharSourceRangeFromSourceRange(getSourceMgr(),
                                                                   NameLoc);
  UnresolvedLoc &Next = LocsToResolve.back();
  bool WasResolved = false;
  if (Range.isValid()) {
    if (NameLoc == Next.Loc) {
      LocsToResolve.pop_back();
      ResolvedLocs.push_back({Node, Range, LabelRanges, RangeType,
        isActive(), isInSelector()});
      if (isDone())
        return true;
      WasResolved = true;
    }

    if (Range.getByteLength() > 1 &&
        (Range.str().front() == '_' || Range.str().front() == '$')) {
      // Also try after any leading _ or $ for name references of wrapped
      // properties, e.g. 'foo' in '_foo' and '$foo' occurrences.
      auto NewRange = CharSourceRange(Range.getStart().getAdvancedLoc(1),
                                      Range.getByteLength() - 1);
      if (NewRange.getStart() == Next.Loc) {
        LocsToResolve.pop_back();
        ResolvedLocs.push_back({Node, NewRange, {}, LabelRangeType::None,
          isActive(), isInSelector()});
        WasResolved = true;
      }
    }
  }
  return WasResolved;
};

void ResolvedRangeInfo::print(llvm::raw_ostream &OS) const {
  OS << "<Kind>";
  switch (Kind) {
  case RangeKind::SingleExpression: OS << "SingleExpression"; break;
  case RangeKind::SingleDecl: OS << "SingleDecl"; break;
  case RangeKind::MultiTypeMemberDecl: OS << "MultiTypeMemberDecl"; break;
  case RangeKind::MultiStatement: OS << "MultiStatement"; break;
  case RangeKind::PartOfExpression: OS << "PartOfExpression"; break;
  case RangeKind::SingleStatement: OS << "SingleStatement"; break;
  case RangeKind::Invalid: OS << "Invalid"; break;
  }
  OS << "</Kind>\n";

  OS << "<Content>" << ContentRange.str() << "</Content>\n";

  if (auto Ty = getType()) {
    OS << "<Type>";
    Ty->print(OS);
    OS << "</Type>";
    switch(exit()) {
    case ExitState::Positive: OS << "<Exit>true</Exit>"; break;
    case ExitState::Unsure: OS << "<Exit>unsure</Exit>"; break;
    case ExitState::Negative: OS << "<Exit>false</Exit>"; break;
    }
    OS << "\n";
  }

  if (RangeContext) {
    OS << "<Context>";
    printContext(OS, RangeContext);
    OS << "</Context>\n";
  }

  if (CommonExprParent) {
    OS << "<Parent>";
    OS << Expr::getKindName(CommonExprParent->getKind());
    OS << "</Parent>\n";
  }

  if (!HasSingleEntry) {
    OS << "<Entry>Multi</Entry>\n";
  }

  if (ThrowingUnhandledError) {
    OS << "<Error>Throwing</Error>\n";
  }

  if (Orphan != OrphanKind::None) {
    OS << "<Orphan>";
    switch (Orphan) {
    case OrphanKind::Continue:
      OS << "Continue";
      break;
    case OrphanKind::Break:
      OS << "Break";
      break;
    case OrphanKind::None:
      llvm_unreachable("cannot enter here.");
    }
    OS << "</Orphan>";
  }

  for (auto &VD : DeclaredDecls) {
    OS << "<Declared>" << VD.VD->getBaseName() << "</Declared>";
    OS << "<OutscopeReference>";
    if (VD.ReferredAfterRange)
      OS << "true";
    else
      OS << "false";
    OS << "</OutscopeReference>\n";
  }
  for (auto &RD : ReferencedDecls) {
    OS << "<Referenced>" << RD.VD->getBaseName() << "</Referenced>";
    OS << "<Type>";
    RD.Ty->print(OS);
    OS << "</Type>\n";
  }

  OS << "<ASTNodes>" << ContainedNodes.size() << "</ASTNodes>\n";
  OS << "<end>\n";
}

CharSourceRange ResolvedRangeInfo::
calculateContentRange(ArrayRef<Token> Tokens) {
  if (Tokens.empty())
    return CharSourceRange();
  auto StartTok = Tokens.front();
  auto EndTok = Tokens.back();
  auto StartLoc = StartTok.hasComment() ?
    StartTok.getCommentStart() : StartTok.getLoc();
  auto EndLoc = EndTok.getRange().getEnd();
  auto Length = static_cast<const char *>(EndLoc.getOpaquePointerValue()) -
                static_cast<const char *>(StartLoc.getOpaquePointerValue());
  return CharSourceRange(StartLoc, Length);
}

bool DeclaredDecl::operator==(const DeclaredDecl& Other) {
  return VD == Other.VD;
}

ReturnInfo::
ReturnInfo(ASTContext &Ctx, ArrayRef<ReturnInfo> Branches):
    ReturnType(Ctx.TheErrorType.getPointer()), Exit(ExitState::Unsure) {
  std::set<TypeBase*> AllTypes;
  std::set<ExitState> AllExitStates;
  for (auto I : Branches) {
    AllTypes.insert(I.ReturnType);
    AllExitStates.insert(I.Exit);
  }
  if (AllTypes.size() == 1) {
    ReturnType = *AllTypes.begin();
  }
  if (AllExitStates.size() == 1) {
    Exit = *AllExitStates.begin();
  }
}

void swift::ide::getLocationInfoForClangNode(ClangNode ClangNode,
                                             ClangImporter *Importer,
                  llvm::Optional<std::pair<unsigned, unsigned>> &DeclarationLoc,
                                             StringRef &Filename) {
  clang::ASTContext &ClangCtx = Importer->getClangASTContext();
  clang::SourceManager &ClangSM = ClangCtx.getSourceManager();

  clang::SourceRange SR = ClangNode.getLocation();
  if (auto MD = dyn_cast_or_null<clang::ObjCMethodDecl>(ClangNode.getAsDecl())) {
    SR = clang::SourceRange(MD->getSelectorStartLoc(),
                            MD->getDeclaratorEndLoc());
  }

  clang::CharSourceRange CharRange =
      clang::Lexer::makeFileCharRange(clang::CharSourceRange::getTokenRange(SR),
                                      ClangSM, ClangCtx.getLangOpts());
  if (CharRange.isInvalid())
    return;

  std::pair<clang::FileID, unsigned>
      Decomp = ClangSM.getDecomposedLoc(CharRange.getBegin());
  if (!Decomp.first.isInvalid()) {
    if (auto FE = ClangSM.getFileEntryForID(Decomp.first)) {
      Filename = FE->getName();

      std::pair<clang::FileID, unsigned>
          EndDecomp = ClangSM.getDecomposedLoc(CharRange.getEnd());

      DeclarationLoc = { Decomp.second, EndDecomp.second-Decomp.second };
    }
  }
}

static unsigned getCharLength(SourceManager &SM, SourceRange TokenRange) {
  SourceLoc CharEndLoc = Lexer::getLocForEndOfToken(SM, TokenRange.End);
  return SM.getByteDistance(TokenRange.Start, CharEndLoc);
}

void swift::ide::getLocationInfo(const ValueDecl *VD,
                  llvm::Optional<std::pair<unsigned, unsigned>> &DeclarationLoc,
                                 StringRef &Filename) {
  ASTContext &Ctx = VD->getASTContext();
  SourceManager &SM = Ctx.SourceMgr;

  auto ClangNode = VD->getClangNode();

  if (VD->getLoc().isValid()) {
    auto getSignatureRange = [&](const ValueDecl *VD) -> Optional<unsigned> {
      if (auto FD = dyn_cast<AbstractFunctionDecl>(VD)) {
        SourceRange R = FD->getSignatureSourceRange();
        if (R.isValid())
          return getCharLength(SM, R);
      }
      return None;
    };
    unsigned NameLen;
    if (auto SigLen = getSignatureRange(VD)) {
      NameLen = SigLen.getValue();
    } else if (VD->hasName()) {
      NameLen = VD->getBaseName().userFacingName().size();
    } else {
      NameLen = getCharLength(SM, VD->getLoc());
    }

    unsigned DeclBufID = SM.findBufferContainingLoc(VD->getLoc());
    DeclarationLoc = { SM.getLocOffsetInBuffer(VD->getLoc(), DeclBufID),
                       NameLen };
    Filename = SM.getIdentifierForBuffer(DeclBufID);

  } else if (ClangNode) {
    ClangImporter *Importer =
        static_cast<ClangImporter*>(Ctx.getClangModuleLoader());
    return getLocationInfoForClangNode(ClangNode, Importer,
                                       DeclarationLoc, Filename);
  }
}

CharSourceRange CallArgInfo::getEntireCharRange(const SourceManager &SM) const {
  return CharSourceRange(SM, LabelRange.getStart(),
                         Lexer::getLocForEndOfToken(SM, ArgExp->getEndLoc()));
}

static Expr* getSingleNonImplicitChild(Expr *Parent) {
  // If this expr is non-implicit, we are done.
  if (!Parent->isImplicit())
    return Parent;

  // Collect all immediate children.
  llvm::SmallVector<Expr*, 4> Children;
  Parent->forEachImmediateChildExpr([&](Expr *E) {
    Children.push_back(E);
    return E;
  });

  // If more than one children are found, we are not sure the non-implicit node.
  if (Children.size() != 1)
    return Parent;

  // Dig deeper if necessary.
  return getSingleNonImplicitChild(Children[0]);
}

std::vector<CallArgInfo> swift::ide::
getCallArgInfo(SourceManager &SM, Expr *Arg, LabelRangeEndAt EndKind) {
  std::vector<CallArgInfo> InfoVec;
  if (auto *TE = dyn_cast<TupleExpr>(Arg)) {
    size_t ElemIndex = 0;
    for (Expr *Elem : TE->getElements()) {
      SourceLoc LabelStart(Elem->getStartLoc());
      SourceLoc LabelEnd(LabelStart);

      auto NameIdentifier = TE->getElementName(ElemIndex);
      if (!NameIdentifier.empty()) {
        LabelStart = TE->getElementNameLoc(ElemIndex);
        if (EndKind == LabelRangeEndAt::LabelNameOnly)
          LabelEnd = LabelStart.getAdvancedLoc(NameIdentifier.getLength());
      }
      bool IsTrailingClosure = TE->hasTrailingClosure() &&
        ElemIndex == TE->getNumElements() - 1;
      InfoVec.push_back({getSingleNonImplicitChild(Elem),
        CharSourceRange(SM, LabelStart, LabelEnd), IsTrailingClosure});
      ++ElemIndex;
    }
  } else if (auto *PE = dyn_cast<ParenExpr>(Arg)) {
    if (auto Sub = PE->getSubExpr())
      InfoVec.push_back({getSingleNonImplicitChild(Sub),
        CharSourceRange(Sub->getStartLoc(), 0),
        PE->hasTrailingClosure()
      });
  }
  return InfoVec;
}

std::vector<CharSourceRange> swift::ide::
getCallArgLabelRanges(SourceManager &SM, Expr *Arg, LabelRangeEndAt EndKind) {
  std::vector<CharSourceRange> Ranges;
  auto InfoVec = getCallArgInfo(SM, Arg, EndKind);

  auto EndWithoutTrailing = std::remove_if(InfoVec.begin(), InfoVec.end(),
                                           [](CallArgInfo &Info) {
                                             return Info.IsTrailingClosure;
                                           });
  std::transform(InfoVec.begin(), EndWithoutTrailing,
                 std::back_inserter(Ranges),
                 [](CallArgInfo &Info) { return Info.LabelRange; });
  return Ranges;
}

redpajama_set_name: RedPajamaGithub


As an inquiry-based school, SLA believes in asking questions, challenging assumptions, and working together to better understand each other and the world.
We are a diverse group, and we embrace every member of our community, regardless of their identity.
We also refuse to insult, threaten, exclude, disempower, or vilify others based on who they are or what they think.
Instead, we listen before we speak. We see each other as complex individuals, not stereotypes. We protect and defend each other when needed. And when we disagree, we treat each other with decency.
To us, that is the ethic of care. We will continue to work and act in this way, each and every day that we walk through these doors.
Most importantly, we believe in you, our students -- your ideas, your passion, and your ability to make the world a better place. Today, like every day, we hold out our hope that you strive to do just that.


text:
Geiom a.k.a. Hem, (born Kamal Joory) is a Nottingham based producer, live electronic musician and DJ. He is also the owner of the Berkane Sol label. He was known for being part of a group of producers along with 2562 and Shackleton who blended techno, garage and dubstep.

Early career
Geiom was first inspired to produce music by the UK rave scene of the early 1990s. His first release was a 12" on the Meir label in 1995. Meir is now the name of his studio. He went on to release music on labels such as Skam Records and Neo Ouija
Geiom's music makes frequent use of live instrumentation; an early example of this is the 'Magic Radios' album which was a collaboration with instrumentalist Morgan Caney.

Geiom has also released experimental music under the name of Hem.
His musical influences are said to include electro, film soundtracks, dub reggae and Indian music.

He co-promoted the influential Deselect events for several years, which featured artists such as Autechre, Plaid, Isan and Kid 606.

Current work
After his first encounters with dubstep in 2004, Geiom started to incorporate the style into his productions, leading to Kode 9 including the track 'Overnight Biscuits' on his 2006 'Dubstep Allstars 3' mix CD, released by the Tempa label.

Geiom started the Berkane Sol record label in 2006 mainly to release his own productions. The label has since seen contributions from Skream, Shackleton, Kode 9, Brackles, Shortstuff, Spamchop, Earlybird, Bowly, Aleks Zen & Erra. Geiom has frequently made use of the profile of the label to showcase new or undiscovered talent. Several artists have launched their careers through a release on Berkane Sol.

Geiom is notable for his frequent collaborations with guest vocalists. The songs "Zalim maar daala" and "Pheli nazir" feature singing in Urdu language by vocalist Khalid. These songs are heavily influenced by Indian film soundtracks.

References

External links
Geiom
The Quietus | Features | Sonic Router | Sonic Router 004 - A Dubstep Column For July
City Centre Offices  –  A Record Label
Blackdown: Futurerustic

Living people
Year of birth missing (living people)
English DJs
English electronic musicians
Dubstep musicians
Electronic dance music DJs

redpajama_set_name: RedPajamaWikipedia


I played with an annoyingly slow player on day one and was pleased to find that the turbo event in the morning of day 2, gave you 20 seconds to act or your hand was dead. If you needed more time you had one time bank chip which afforded you an extra minute.
This chip led to two interesting hands, the first was on the table next to me where on the river a player with a pair of deuces hit a deuce for a full house and shoved all in over a river bet. "I think I'm going to call…" his opponent said before throwing his time bank chip on to the felt . This was mistaken as a call and the full house player exposed his hand, only to find that he had thrown the time bank chip in. The time bank player realising he was beat folded amidst much commotion.
We discussed it on our table only for an hour later the same event to happen. The player on my left when checked to on the river bet half pot for 17K and once again the time bank chip went in only for him to show his turned flush before realising his error. His opponent folded having got the maximum value from this time-bank chip.
I believe getting your opponent to talk can get you information, I remember Antonio Esfandiari getting Daniel Negreanu to betray his hand in a table talk master class.
I do believe Will's speech play may betray him, this is an interesting article reviewing his speech play at the WSOP.


An absurdist comedy that portrays the ends to which a contractor will go to in order to maintain his reputation as a professional.
From the name of the short film alone, the viewer has no idea on how it connects to the opening scene: a bleak road with a man happily driving a hearse. The short film seems dark, probably representing Igor's frustration throughout the whole film. Igor does what he must to get paid by his client, even if that means resurrecting the dead.
Igor's client, Irina, continues to make outlandish requests, each more out there than the last, to keep the deceased's family happy and withholding Igor's pay until he completes each request. At first, Irina's requests and Igor's reluctance into acceptance seem comical. After each subsequent request however, the running joke seems repetitive. It's not until Igor successfully brings the decreased to life (as per Irina's request) the film takes a turn for the truly funny when the two engage in an epic street fight.
By the end of the short film Igor is convinced his motivation to keep working, even though he is blackmailed with his own pay, is the attractiveness of his portfolio. Does this mirror our own society's need to market oneself through an impressive portfolio or resume? Igor realizes the fact that he is the best in his field means nothing unless he can list it on his portfolio for the next client. Portfolio is an official selection of the New York City Independent Film Festival and will be shown at the festival on October 12-18, 2015.


Students move easily through the halls of Belmont High School in downtown Los Angeles. Walking the hallways was once like swimming upstream, former students and teachers said, but after years of efforts to reduce overcrowding, the school has fewer than 1,000 students enrolled.
Passing periods at Belmont High School used to mean pushing your way through a hall teeming with students. Now, it is a leisurely stroll.
The storied campus perched on top of a hill on the fringe of downtown was once the largest high school in the state and one of the biggest in the country. It was also the most crowded. Built to hold 2,500 at most, it peaked at 5,500 students.
But today, it could use a few more.
Over the last decade, enrollment has plummeted with the construction of nearby schools by the Los Angeles Unified School District. Pair that with the emergence of charter schools and enrollment has dwindled to less than 1,000 students.
"It's a calm campus now," said Principal Kristen McGregor. "Everybody can walk to class without feeling like they're swimming upstream."
But while the drop in population has led to academic gains and a more manageable campus, it has also cost the school some of its long-held traditions and character. Teachers and administrators hope more students could help the campus regain some of what it has lost.
The new Belmont is split into three academies with different areas of focus: medical and public service; multimedia; science, art and green engineering. Teachers know all of their students by name and everyone gets a chair. There's enough space on campus to house a middle school, charter school and another high school.
To students from years past, it's an unrecognizable Belmont.
When the school opened in 1923, it had about 500 students. By the 1950s, enrollment began to dwindle and the Los Angeles school board considered closing the campus. But four decades later, enrollment had ballooned to about 5,500.
Students poured into Belmont's hallways and stairways — becoming a traveling mass of momentum between classes, said Teresa Salguero, who attended the school in the 1980s and has taught Spanish there since 1992.
"It was scary," she said. "It was like you were caught in a wave — you just had to go with it."
To address the overpopulation, the school operated on a year-round schedule, with about a third of students on vacation at any one time. In addition, Los Angeles Unified School District bused thousands of would-be students to less-crowded campuses in the San Fernando Valley.
Immigrant families have long landed in Westlake, the neighborhood surrounding Belmont, and that diversity still shows today. English is a second language for about a third of the students at Belmont, where 18 languages are spoken. The school's entire student body meets poverty standards and therefore qualifies for free or reduced-priced lunch.
"I tell the kids, this place is like the Statue of Liberty," Salguero said.
Vicky Castro, a former school board member whose district included Belmont, said the crowding had hindered the campus from establishing itself as a community hub for all residents because so many students were bused elsewhere.
"It was a community in crisis for schools," she said. "There were many students who never attended their home school."
The year-round schedule also drew criticism, as it called for a shorter school year, but longer days. Students received the same amount of instruction, but it was squeezed into 163 days rather than the standard 180.
Board member Monica Garcia, whose district includes Belmont, said this method cheated the students who needed the most help by providing them little personal attention and fewer days in the classroom.
"It was the epitome of educational malpractice," she said, adding that the community eventually pressured the school district to act more effectively.
In 2001, the district responded by embarking on an ambitious, $20-billion school construction program. Three facilities were built to relieve Belmont: Cortines School of Visual and Performing Arts; Miguel Contreras Learning Complex; and the infamous Belmont Learning Complex, now named the Roybal Learning Center, which opened in 2008 as one of the most expensive high schools ever built because of environmental issues, construction delays and other problems.
Belmont High benefited greatly from the drop in enrollment and the creation of a small-school structure, administrators and teachers say.
Since the enrollment decline began in 2001, the school's Academic Performance Index score, based on standardized test results, has risen. While its latest score of 668 still falls short of the state's 800-point goal, it has gone up more than 175 points since 2002. Similar gains have been seen at the new schools in the area.
Despite the improvements that come with a shrunken population, McGregor said she would like a couple of hundred more students — an unexpected desire considering the school's history, she admits. "I think it would be healthier for the campus," she said.
The split into three academies and smaller numbers eroded some traditions — the things that Belmont clung to through the ups and downs. In her first year at the helm, McGregor brought back letterman jackets for athletes. She hopes eventually to resurrect the award-winning marching band, now disbanded. She's also working to restore to prominence the school's cross-country team — once a source of great pride.
On a recent morning, Heather Donnelly, 15, beamed as her teacher used a diagram she had drawn of homeostasis in the pituitary gland as an example to the class. "So does that mean it's right?" she asked, earning a nod from her teacher.
The houses and apartment buildings of Westlake and Pico-Union were visible through the fourth-floor windows behind her. The two neighborhoods, among others, comprise the so-called Belmont Zone of Choice, an area that once fed only into Belmont High School but now consists of 17 school choices on four different campuses, all of which compete for students.
Heather chose Belmont over other options in part because her siblings went there, but mostly for its science academy, which she touts to future students during visits to neighborhood middle schools.
Luring more students could help build a school spirit like the one from the old days, the first-year cheerleader said. "But the people we do have here — everyone is here together," Heather said. "There's a lot of school pride."
With shiny new schools not far away and a difficult-to-shed reputation as a dangerous and low-performing campus, Belmont remains a tough sell at times. And yet Salguero said that perception couldn't be further from the truth.
"Belmont is a special place. There's something special about these kids," she said. "All they need is a little guidance and a little support and they can do anything."


text:
Wed, Aug 23, 2023, 08:00 AM MST
Thu, Aug 24, 2023, 08:00 AM MST
Fri, Aug 25, 2023, 08:00 AM MST
Tue, Sep 05, 2023, 15:00 PM CST
Wed, Sep 06, 2023, 08:00 AM CST
Superior Livestock "Labor Day" Auction LIVE from Hudson Oaks, TX Day 1
Thu, Sep 14, 2023, 10:00 AM EST
Madison County Online Only Tax Foreclosure Real Estate Auction
Madison County Online Only Tax Foreclosure Auction: Ending Thursday, September 14 at 10AM Location: Online Only NYSAuctions.com. Bidding will open Monday, September 11 at 10AM Bidders Seminar: List...
Thu, Sep 21, 2023, 08:00 AM CST
Wed, Oct 04, 2023, 15:00 PM CST
Thu, Oct 05, 2023, 08:00 AM CST
Wed, Nov 01, 2023, 15:00 PM CST
Thu, Nov 02, 2023, 08:00 AM CST
Wed, Dec 13, 2023, 15:00 PM CST
Thu, Dec 14, 2023, 08:00 AM CST
Sun, Dec 31, 2029, 12:00 PM CST
Test Auction
Sun, Dec 31, 2029, 13:00 PM MST
Willow Creek, MT
Training Auction
Offering 85 registered yearling Hereford bulls and 20 yearling replacement Hereford females along with 10 young April-calving cows.
Test Auction 2

redpajama_set_name: RedPajamaCommonCrawl


text:
A The Go Master (egyszerűsített kínai: 吴清源; tradicionális kínai: 吳清源; pinjin: Wú Qīngyuán) 2006-ban bemutatott kínai–japán életrajzi film a go játékos Wu Qingyuan-ról, jobban ismert japán neve Go Seigen. Tian Zhuangzhuang rendezte a filmet.

A 44. New York-i filmfesztiválon volt a premierest. Bemutatták az Amerikai Filmintézetben (AFI), valamint a kínai filmfesztivál keretein belül Silver Springben, Marylandben.

Cselekmény
Bemutatja a híressé váló Wu Qingyuan-t, mint rendkívüli stratégiai játékost, illetve Kína és Japán között feszülő konfliktust. A go kínai eredetű, körülbelül négyezer éves táblás játékot közelebbről megismerhetjük.

Szereplők
 Chang Chen
 Sylvia Chang
 Akira Emoto
 Nishina Takashi

Kapcsolódó szócikkek
 Kínai filmművészet

Források

Külső hivatkozások
 IMDb
 Bemutató előzetes
 The Go Master film

2006 filmjei
Kínai filmdrámák
Kínai életrajzi filmek
Japán filmdrámák
Japán életrajzi filmek


text:
\section*{Plain Language Summary}
A charge exchange between highly charged-state ions in the solar wind and neutral atoms is understood as a bright source of soft X-ray in space. It has been suggested that this emission helps visualize the global structures of the Earth's magnetosphere as a backlight; that is, we expect such an emission to be bright, in particular in the dayside solar wind (magnetosheath), and dark on the magnetosphere side. For validation and for an upcoming space telescope mission, we have developed a numerical model to provide the spatial distribution of the X-ray intensity. We conducted numerical simulations under various solar wind conditions. The model predicts that the X-ray emission is bright in the current layer near the reconnection region at the magnetospheric boundary. In particular, under low-temperature solar wind conditions, we found that the X-ray intensity reflects the bulk motion of reconnection jets, thus allowing visualization of a breaking of the terrestrial magnetic barrier.

\section{Introduction}
In-situ spacecraft observations have revealed the plasma dynamics in the Earth magnetosphere and the solar wind in response to variations in the activities on the Sun. Such observations provide ample opportunities to understand plasma kinetics, where energy release and dissipation by magnetic reconnection, collision-less shocks, and turbulence are of great interest. By contrast, global imaging of remote objects by observation of electromagnetic wave emissions, as in radio waves, optical light, infrared, X-, and gamma rays, is a common tool in astrophysics. Such remote imaging techniques have also been used for visualizing the near-Earth space environment (geospace). The plasmasphere in the inner magnetosphere was visualized by observing extreme ultraviolet emission \cite{nakamura_terrestrial_2000,burch_views_2001}. The detection of energetic neutral atoms generated through a charge-exchange process between protons and neutral (hydrogen) atoms has been a tool for providing global pictures of the ring current \cite{burch_views_2001,goldstein_five_2013} in the inner magnetosphere, the magnetosheath, and the cusp regions \cite{fuselier_energetic_2010,petrinec_neutral_2011}, as well as in heliospheric structures \cite{mccomas_global_2009}.

It has been suggested that observation of soft X-ray emissions could be useful as a remote imaging tool \cite{sibeck_imaging_2018}. The soft X-ray emission in this context was first recognized as an unknown source of X-ray enhancement discovered by the astrophysical X-ray space telescope, and was known as the long-term enhancement \cite{snowden_analysis_1994}. Such mysterious emissions were also found when the X-ray telescope observed the Hyakutake comet \cite{lisse_discovery_1996}. Later, it was found that the enhancement correlated well with solar wind proton flux variations \cite{cravens_temporal_2001}. We now understand that the emission is attributed to the charge exchange between highly charged-state heavy ions, such as ${\rm C^{6+}}$, ${\rm O^{7+}}$ or ${\rm O^{8+}}$ ions, in the solar wind and neutral atoms \cite{cravens_comet_1997}. This process is referred to as solar wind charge exchange (SWCX).

SWCX in the geospace was evidenced by spectrum-resolved X-ray observations by Chandra \cite{wargelin_chandra_2004}, XMM-Newton \cite{snowden_xmmnewton_2004,carter_identifying_2008,connor_exospheric_2019}, and Suzaku \cite{fujimoto_evidence_2007,ezoe_time_2010,ishikawa_suzaku_2013}. These observations with the spectral information in sub-keV energies revealed that enhanced counts at the energies expected for SWCX emission lines were observed when instruments pointed at regions with high densities of solar wind ions like the magnetosheath and the cusp.

After these successful observations, specially designed  missions of the X-ray space telescope, including SMILE (\url{https://www.cosmos.esa.int/web/smile/home}) and STORM (\url{https://stormmission.com/}), were proposed to visualize the magnetosphere through SWCX. Japanese GEOspace X-ray imager (GEO-X) project shares such scientific objectives and has been approved as a very small satellite mission. The GEO-X satellite is scheduled to be launched during the upcoming solar maximum and will be delivered to a low-latitude orbit at a distance of the lunar orbit \cite{ezoe_geo-x_2020}.

Numerical modeling of the SWCX emission is necessary for mission design and to determine the scientific targets in advance. Such modeling also complements the observations to understand the magnetospheric dynamics behind them. Global magnetohydrodynamic (MHD) simulations of the Earth magnetosphere have been used to model X-ray emission in the dayside magnetosheath, the cusp \cite{kuntz_solar_2015,connor_exospheric_2019,connor_soft_2021}, and the low-latitude boundary layer subject to the Kelvin--Helmholtz vortex evolution \cite{sun_x-ray_2015}. While these simulation models provided intensity maps reflecting the shape of the magnetospheric boundaries, in this Letter, we propose that by employing global MHD simulations, the X-ray emission can provide unique information concerning the plasma dynamics around the magnetopause reconnection site under particular solar wind conditions. We expect to observe accelerating plasma outflows from the reconnection region  from the low-latitude orbit of GEO-X.

\section{Numerical Models}
We developed a global MHD simulation model of the magnetosphere by using the public MHD code CANS+, which adopts standard Godunov schemes, including the approximate Riemann solvers and the nonlinear interpolation schemes \cite{matsumoto_magnetohydrodynamic_2019}. In this study, we specifically used the Harten-Lax-van Leer (HLL) approximate Riemann solver \cite{hussaini_uniformly_1987} and the fifth-order, monotonicity-preserving (MP5) scheme \cite{suresh_accurate_1997}. We solved the modified MHD equations for numerically stable solutions with the dipole magnetic field by subtracting the potential field in the numerical flux calculation \cite{miyoshi_hlld_2010,guo_extended_2015}.

The simulations were conducted in Cartesian coordinates with inner boundary conditions on a sphere surface at a radial distance of  $R=4\ R_{\rm E}$, where $R_{\rm E}$ is the Earth's radius. The numerical resolution in space was defined as $\Delta_X = \Delta_Y = \Delta_Z = 0.15\ R_{\rm E}$ in $X \le 54\ R_{\rm E}$ and $|Y|, |Z| \le 22.875\ R_{\rm E}$. The resolution gradually decreased in regions further outward and tailward. The overall domain covered $-30\ R_{\rm E} \le X \le 85.6\ R_{\rm E}$ and $-38.3\ R_{\rm E} \le Y, Z \le +38.3\ R_{\rm E}$ with $592 \times 355 \times 355$ computational cells. The solar wind plasma and the interplanetary magnetic field (IMF) were imposed as a boundary condition in the $Y$--$Z$ plane at $X=-30\ R_{\rm E}$. (Here the positive X- and Y-axes point to the tailward and dawnward directions, respectively.)

We calculated the X-ray emission intensity by the empirical model \cite{cravens_temporal_2001,connor_soft_2021} given as
\begin{equation}
I = \alpha N_{\rm p} N_{\rm H}\sqrt{v_{\rm th}^2+V} = \alpha N_{\rm p} N_{\rm H} \sqrt{\frac{3k_{\rm B} T}{M}+V^2} ~~ [{\rm eV\ cm^{-3}\ s^{-1}}],
\label{x-intensity}
\end{equation}
where $\alpha=6\times10^{-16} ~ {\rm eV\ cm^2}$ is the coefficient that incorporates information about the cross sections, the emission line energies, and the ion compositions in the solar wind,  $N_{\rm p}$ and $N_{\rm H}$ are the plasma and hydrogen number density, respectively, $v_{\rm th}$ is the plasma thermal speed for the plasma temperature $T$ with the Boltzmann constant $k_{\rm B}$ and the proton mass $M$, and $V$ is the bulk speed of plasma. The MHD model provides three-dimensional (3D) distributions of $N_{\rm p}$, $T$, $V$, whereas the hydrogen number density profile is given by a spherically symmetric model of the exosphere \cite{cravens_temporal_2001} as
\begin{equation}
\label{exo_model}
   N_{\rm H} = 25\left(\frac{10\ R_{\rm E}}{R}\right)^3 ~~ [{\rm cm^{-3}}] .
\end{equation}

Now we focus on the emission around the magnetopause reconnection site and consider the possibility of finding the plasma dynamics from the X-ray intensity map. For this purpose, we arrange eq. (\ref{x-intensity}) as
\begin{equation}
    I = \alpha N_{\rm p} N_{\rm H} \sqrt{\frac{3k_{\rm B} T}{M}+V^2} = \alpha N_{\rm p} N_{\rm H} V \sqrt{\frac{1.4}{M_{\rm s}^2}+1},
\label{x-intensity_mach}
\end{equation}
where the sonic Mach number $M_{\rm s}$ refers to the reconnection outflow, with the specific heat ratio of $5/3$. Using the relation between the outflow Mach number and the plasma $\beta$ in the inflow region \cite{soward_fast_1982,aurass_shock-excited_2002,seaton_analytical_2009}, we have
\begin{equation}
I = \alpha N_{\rm p} N_{\rm H} V\sqrt{\frac{1.4}{M_{\rm s}^2}+1} = \alpha N_{\rm p} N_{\rm H} V \sqrt{\frac{6+15\beta_{\rm sheath}}{10}+1} \label{x-intensity_beta},
\end{equation}
where $\beta_{\rm sheath}$ is the plasma $\beta$ defined in the magnetosheath (shock downstream). From eq. (\ref{x-intensity_beta}), we find that the X-ray intensity can reflect the plasma bulk motion under low-$\beta$ conditions in the shock downstream ($\beta_{\rm sheath}$) provided $N_{\rm H}$ is uniform within the scale of the current sheet. In the limit of $\beta_{\rm sheath}\ll1$, we expect X-ray emissions from the outflow with the strength of
\begin{equation}
    I = 1.0\times 10^{-5} \left(\frac{N_{\rm p}}{10~{\rm cm^{-3}}} \right)\left( \frac{10~R_{\rm E}}{R}\right)^3 \left(\frac{V}{500~{\rm km~s^{-1}}}\right) ~~ [{\rm eV\ cm^{-3}\ s^{-1}}].
\end{equation}
Next, we search for upstream solar wind conditions such that $\beta_{sheath}$ becomes less than unity.

Figure \ref{RH} shows the downstream plasma $\beta$ calculated from the magnetosonic perpendicular shock jump condition. A typical solar wind parameter (black filled circle) results in a high $\beta$ ($\sim 15$) plasma in the magnetosheath. For these normal conditions, we expect the X-ray emission to reflect hot plasma distribution in the magnetosheath. By contrast, conditions in which the downstream $\beta$ becomes less than unity are limited to the left bottom corner of the diagram. In this study, we selected upstream parameters as indicated by the white open circle in Figure \ref{RH}, giving downstream $\beta \sim 0.5$, as a low-$\beta$ solar wind condition. Other upstream parameters are summarized in Table \ref{sw_params}.

\begin{figure}
\includegraphics[width=\textwidth]{RH.eps}
\caption{Downstream plasma $\beta_2$ from the magnetosonic perpendicular shock jump condition as a function of the magnetosonic Mach number $M_{\rm f}$ and the upstream plasma $\beta_1$. The solid white line indicates $\beta_2=1$. Black filled and white open circles indicate the selected normal and low-$\beta$ solar wind conditions, respectively.}
\label{RH}
\end{figure}

\begin{table}
\caption{Upstream solar wind conditions for simulation runs}
\centering
\begin{tabular}{cccccc}
\hline
  & $N_{\rm p}~{\rm [cm^{-3}]}$ & $V~{\rm [km~s^{-1}]}$ & $B_{z,{\rm IMF}}~{\rm [nT]}$ & $M_{\rm f}$ & $\beta$  \\
\hline
normal solar wind & 4 & 400 & -3 & 5.3 & 5.0 \\
low-$\beta$ solar wind & 4 & 300 & -10 & 2.6 & 0.1 \\
\hline
\end{tabular}
\label{sw_params}
\end{table}

\section{Simulation Results}
\begin{figure}
\begin{center}
\includegraphics[width=0.75\textwidth]{XrayVz-3D.eps}
\end{center}

\caption{3D distribution of the SWCX emission intensity for (a) the normal and (b) low-$\beta$ solar wind conditions along with (c) the $V_z$ profile for the low-$\beta$ condition. The color ranges with gradual opacity increment as indicated by the color bars. The color of the field lines represents the magnetic field strength. Data in the morning-north sector ($Y<0$ and $Z>0$) were dropped for 3D visualization.}
\label{3D_view}
\end{figure}

We examined the global MHD simulations for the normal and low-$\beta$ solar wind conditions (Table \ref{sw_params}). We used data when the magnetosphere reached a stationary state after continuously injecting upstream plasma for an hour.

Figure \ref{3D_view} shows global 3D images of the SWCX emission strength calculated by eq. (\ref{x-intensity}) for the normal (Figure \ref{3D_view}(a)) and low-$\beta$ (Figure \ref{3D_view}(b)) solar wind conditions. For the normal solar wind case, the X-ray emission is diffused in the entire dayside magnetosheath with strength of $\sim 2\times 10^{-6} {\rm\ eV}\ {\rm cm}^{-3}\ {\rm s}^{-1}$. A bright spot can be found at the top of the cusp region with strength of $\sim 3\times 10^{-6} {\rm\ eV}\ {\rm cm}^{-3}\ {\rm s}^{-1}$ where the dayside reconnection outflow meets the cusp region. By contrast, the emission intensity is remarkably brighter for the low-$\beta$ solar wind case. Some filamentary structures are found along the dayside magnetopause at different longitudinal locations with the strong emission strength of $\sim 6\times 10^{-6} {\rm\ eV}\ {\rm cm}^{-3}\ {\rm s}^{-1}$. These features indeed reflect plasma jets from the dayside reconnection regions, as shown in Figure \ref{3D_view}(c). The reconnection takes place locally in the azimuthal direction along the magnetopause, and produces very fast outflows reaching $600~{\rm km~s^{-1}}$ in both the northward (red) and southward (blue) directions.

\begin{figure}
\includegraphics[width=\textwidth]{2DPBV.eps}
\caption{Meridional profiles of the plasma pressure ((a) and (d)) in the unit of ($10^{-9}~{\rm Pa})$, plasma $\beta$ ((b) and (e)) in the logarithmic scale, and the z-component of the velocity ((c) and (f)) in ($\rm km~s^{-1}$) for the normal (top) and low-$\beta$ (bottom) solar wind conditions. Overplotted field lines represent the magnetic field.}
\label{2DPBV}
\end{figure}

Plasma and magnetic field profiles in the meridian plane are shown in Figure \ref{2DPBV}. Under the normal solar wind condition, the magnetosheath is essentially a high-$\beta$ plasma ($\beta > 10$) and the dayside magnetopause reconnection is rather moderate with an outflow speed of $\sim 200~{\rm km~s^{-1}}$. For the low-$\beta$ solar wind case, the pressure in the magnetosheath is as low as $0.2~{\rm nPa}$, and the resulting plasma $\beta$ in the magnetosheath $\beta_{\rm sheath} \sim 0.5$, as expected from the shock jump condition (Figures \ref{RH} and \ref{2DPBV}(e)). Because of the strong IMF, the reconnection outflow speed along the magnetopause reaches $|V_z| \sim 600~{\rm km~s^{-1}}$. Then, the flow decelerates by encountering the protruding cusp region where the plasma is adiabatically heated.

\begin{figure}
\includegraphics[width=\textwidth]{2DXM.eps}
\caption{Integrated X-ray intensity map ((a) and (d)), its enlarged view of the local magnetopause indicated by a square in (a) and (d) ((b) and (e)), and the sonic Mach number squared defined for the $V_z$ component in the meridian plane ((c) and (f)) for the normal (top) and low-$\beta$ (bottom) solar wind conditions. The bright region near the Earth reflects numerical artifacts around the inner boundary at $R=4~R_{\rm E}$}
\label{2DXM}
\end{figure}

The remote imaging technique provides a 2D map of the X-ray emission by integrating photons coming along the line of sight (LOS) of the telescope. Considering the low-latitude orbit of GEO-X and its distant orbit from the Earth ($R\sim 60~R_{\rm E}$), here we simply integrated the X-ray intensity along the Y-axis from a virtual observation location at $(X,~Y,~Z)=(0,~-60,~0)~R_{\rm E}$. We assumed zero emission outside of the simulation domain ($|Y|>38.3~R_{\rm E}$). Figure \ref{2DXM} shows the integrated X-ray intensity maps for the normal (Figure \ref{2DXM} (a)) and low-$\beta$ (Figure \ref{2DXM} (d)) cases along with enlarged views around the magnetopause (Figures \ref{2DXM}(b) and \ref{2DXM}(d)). As shown in previous studies, the integrated emission is strongest in the dayside magnetosheath (the bright region near the Earth reflects numerical artifacts around the inner boundary at $R=4~R_{\rm E}$). For the normal solar wind, the emission is bright in the entire magnetosheath region with a strength of $4.0~{\rm keV~cm^{-2}~s^{-1}~str^{-1}}$. This is quantitatively consistent with \citeA{connor_soft_2021} by taking into account their different solar wind number density ($10~{\rm cm^{-3}}$). Figure \ref{2DXM}(b) shows a 2D X-ray map in the localized $5~R_{\rm E} \times 5~R_{\rm E}$ area near the magnetopause. This area and the spatial resolution approximately correspond to the expected field-of-view and angular resolution of the GEO-X imager at a distance of $R=60~R_{\rm E}$, respectively \cite{ezoe_geo-x_2020}. With this area and spatial resolution, 2D X-ray maps would successfully identify the shape of the magnetosphere under a typical southward IMF condition. The strong emission was attributed mostly to the hot plasma both in the magnetosheath and in the current sheet, but the bulk motion of the reconnection outflow might have some contributions in the high-latitude region along the current sheet because the sonic Mach number gradually increases toward the cusp (Figure \ref{2DXM}(c)).

The integrated X-ray intensity is rather weak in the low-$\beta$ solar wind case (Figure \ref{2DXM}(d)) because the overall emission is weak and the strong emission area is localized (Figure \ref{3D_view}(b)). The magnetosheath is dark because the downstream plasma is still cold for the selected upstream condition. The emission strength is localized in the vicinity of the dayside magnetopause and the top of the cusp where the fast reconnection outflow decelerates and compresses the plasma (Figure \ref{2DPBV}(f)). When we focused on the localized area near the magnetopause, remarkably, two bright areas with $\sim 2.0~{\rm keV~cm^{-2}~s^{-1}~str^{-1}}$ were found (Figure \ref{2DXM}(e)), one of which coincides with a fast plasma jet in the meridian plane with large sonic Mach numbers $M_{\rm s}^2 > 2$ (Figure \ref{2DXM}(f)). Thus, the emission could be attributed to the bulk motion of the reconnection outflow (eq. (\ref{x-intensity_mach})). Another strong emission area also corresponds to a fast jet in a different longitudinal location, as indicated by the 3D profile of $V_z$ (Figure \ref{3D_view}(c)). These filamentary structures with large sonic Mach numbers imply the possibility of finding reconnection outflows from an actual LOS-integrated X-ray map particularly under low-$\beta$ solar wind conditions.

\section{Summary and Discussion}
The X-ray imager provides spectral information with emission lines in addition to a LOS-integrated 2D intensity map. A shift of the line energy and the line broadening provide information on bulk motion and thermal or turbulent motion of plasma \cite<e.g.,>{hitomi_collaboration_quiescent_2016}. Before using such spectral information, in this paper, we explored the possibility of extracting information on the bulk motion of plasma from an SWCX X-ray intensity map near the dayside magnetopause reconnection site by examining global MHD simulations. We found that under low plasma-$\beta$ solar wind conditions, the SWCX X-ray emission can reflect the reconnection outflow along the magnetopause. The emission from the reconnection outflows is somewhat faint ($\sim 2.0~{\rm keV~cm^{-2}~s^{-1}~str^{-1}}$) compared to the astrophysical backgrounds (e.g., $10.9~{\rm keV~cm^{-2}~s^{-1}~str^{-1}}$ from extragalactic sources \cite{cappelluti_chandra_2017}). However, these astrophysical sources can be considered constant within the dynamical time scales of the magnetospheric phenomena, and therefore, the SWCX emission can be obtained by subtracting the astrophysical origins from observation signals (Sibeck et al., 2018). More specifically, the dayside reconnection lasts up to several hours (Gosling et al., 1982; Phan et al., 2004), and the spatial extent of the structure is $\sim5\  R_{\rm E}$ along the outflow direction and a few thousands of kilometers ($\sim 0.5\ R_{\rm E}$) in the normal direction. These temporal and spatial scales can be resolved by the X-ray imager to be onboard GEO-X; the expected spatial (angular) resolution is $0.2\ R_{\rm E}$ from $60\ R_{\rm E}$ distance ($10\ {\rm arcmin}$), and the time cadence is within an hour (cf. Ezoe et al., 2020). We also note that there remains uncertainty in the predicted X-ray intensity by a factor of two depending on different exosphere models at these radial distances \cite{connor_soft_2021}.

Now, one may have a question about how we can actually observe such low-$\beta$ solar wind. Low-Mach-number or low-$\beta$ solar wind has been observed \cite{watari_statistical_2001,nishino_anomalous_2008,wilson_iii_statistical_2018}, in particular, associated with coronal mass ejections \cite{kataoka_flux_2006,lavraud_altered_2008}. Thus, although such solar winds are not usual, they are possible in some occurrence frequencies. For more quantitative discussion, we surveyed observation periods of the low-$\beta$ solar wind \add{under prolonged southward IMF,} satisfying the condition $M_{f1} \le 3.6$ and $\beta_1 \le 1.1$ (left-bottom area in Figure 1) \add{along with $B_{z,{\rm IMF}} \le -5\ {\rm nT}$} using the NASA OMNIWeb service. We found such particular solar winds can be found with \change{5.1}{1.0}\% probability during solar cycle 23 (August 1996--November 2008) and \change{3.0}{0.6}\% probability during solar cycle 24 (December 2008--November 2019). Thus, we can expect a certain observation feasibility in the upcoming solar cycle when the planned missions will be launched. In addition, plasma $\beta$ in the magnetosheath has been discussed in terms of dayside reconnection. \citeA{phan_dependence_2013} statistically studied the dayside reconnection occurrence frequency and found that the low-$\beta$ magnetosheath condition favored the magnetic reconnection occurrence as supported by the theories. \citeA{koga_dayside_2019} also examined the magnetosheath $\beta$ focusing on the reconnection outflow speed. There was a clear tendency that faster reconnection outflows were found under lower-$\beta$ magnetosheath conditions. Thus, the low-$\beta$ magnetosheath condition we proposed in this study has been positively supported by statistical studies using observational data.

Magnetic reconnection is essential for releasing the magnetic energy known as solar flares. There have been many opportunities to visually identify reconnecting field lines in the solar corona by solar observatories \cite<e.g.,>{yokoyama_clear_2001,liu_reconnecting_2010,savage_reconnection_2010,takasao_simultaneous_2012}. However, reconnection in the corona is complex in 3D and transient, and its behavior is difficult to understand. In this regard, dayside reconnection under low-$\beta$ solar wind conditions would provide great opportunities to visually understand the steady-state magnetic reconnection \cite{gosling_evidence_1982,phan_cluster_2004} and even transient phenomena as flux transfer events \cite<e.g.,>{akhavan-tafti_mms_2018} using SWCX X-ray imaging.

\section{Open Research}
The simulation data used in this study and the software (An Interactive Data Language script and ParaView state files) used to create the figures in this paper are available online \url{https://doi.org/10.5281/zenodo.6827016}.

\acknowledgments
We thank Masaki N. Nishino for the discussion on low-Mach-number solar wind studies. This work is supported by the Japan Society for the Promotion of Science (JSPS) KAKENHI Grant Number 20K20945. Numerical simulations were conducted using the FUJITSU Supercomputer PRIMEHPC FX1000 (Wisteria/BDEC-01) at the Information Technology Center, the University of Tokyo.

redpajama_set_name: RedPajamaArXiv


Most residents of assisted living facilities are not able to attend worship services at a local church so each month a team from Sunrise Christian Fellowship provides Bible teaching, worship, visitation, prayer support, encouragement & love at a local facility.
In 2010 the first of the Baby Boomer generation reached retirement age. Some now reside in assisted living facilities while others are able to minister with reaching them with a message of hope and caring.
if ministering to the elderly is some where you would like to serve, please contact us on our contact page and we will set up a time to meet with you.


text:
Sardar Patel became anathema for Congress, particularly after advent of Indira Gandhi
By Mohan Guruswamy*
Narendra Modi will tomorrow inaugurate the giant Sardar Patel statue facing the Narmada Dam, 3.2 km away on the river island called Sadhu Bet near Rajpipla in Gujarat. Standing almost six hundred feet tall, it is the world's tallest statue. The project began in December 2013, and is probably the only achievement the Modi government has to show. The project worth Rs. 2989 crores was won by Larsen and Toubro (L&T). Initially the total cost of the project was estimated to be about Rs 3,001 crore and was paid for by the Government of India.
Initially Modi flagged off as to be built by small contributions and crowd funding, but like all his other projects the means were actually something else. The bronze plates to create the likeness of Sardar Patel were imported from the TQ Art Foundry, a part of the Jiangxi Toqine Company in Nanchang, China. Hundreds of Chinese workers also toiled at Chad Bet to "assist" L&T in the concrete construction of the statue core.
Despite its Chinese lineage, the Patel statue was as much a bold assertion of Gujarati nationalism as it was to give Narendra Modi a political lineage to distinguish him from the parent RSS which sat out the freedom movement. Please note he didn't build a statue of Guru Golwalkar or Deendayal Upadhyaya or even VD Savarkar. Or for that matter even Subhash Chandra Bose who still has a far bigger imprint on our minds than Vallabhbhai Patel ever did.
After Modi's brazen attempt to draw political sustenance from the memory of Sardar Patel, an unseemly argument has broken out between the Congress and BJP over who are the true inheritors of Sardar Vallabhbhai Patel's legacy. That the BJP's not so disguised attempt to arrogate it for itself in a bid to give itself a nationalist movement genealogy is a tawdry attempt to rewrite history.
What Sardar Patel thought of the RSS is a matter of record. He minced no words about what he thought of it -- that it was fascist and narrow minded, and was responsible for the climate of hatred that led to Gandhiji's assassination. In a letter on July 18, 1948, after Gandhi's murder, the Sardar wrote to Shyama Prasad Mukherjee, who would later found the Jan Sangh:
"As a result of the activities of these two bodies [the RSS and the Hindu Mahasabha], particularly the former, an atmosphere was created in the country in which such a ghastly tragedy became possible. There is no doubt in my mind the extreme section of the Hindu Mahasabha was involved in this conspiracy. The activities of the RSS constituted a clear threat to the existence of the Government and the State."
The RSS now has the government but it still presents a clear and present danger to the original idea of India, as an inclusive, egalitarian nation united by a Constitution and a shared purpose.
Modi has invested hugely in creating the illusion that the Congress party's preferred leader was the Sardar and that Nehru was imposed on it. Nehru became PM because he was by far the Congress' most popular politician, after Gandhiji. Nehru was the party's star campaigner, captivating people with his soaring oratory and easy communication style in Hindustani. Patel might have had a firm grip on the Congress organization, but he was far behind Nehru in popularity and charisma.
Patel himself conceded this at a massively attended Congress rally in Mumbai, when he told the celebrated American author and journalist Vincent Sheean, "They come for Jawahar, not for me." Patel's realism was the hallmark of his politics and that made him the perfect foil to Nehru's idealism.
It is also well known that the Congress had little time for the Sardar's legacy till Narendra Modi tried to don it. But the Congress's attempt to rediscover the Sardar's legacy and claim exclusive rights over it is also no less tawdry. Even when LK Advani tried it was not taken seriously.
But like the Sardar, Modi too is a Gujarati and that has a certain resonance in that state. We know how strongly Modi feels about the Gujarati identity. His unwillingness to insure the Asiatic lion against extinction by translocating a few prides emanates from this.
It is well known that there were serious differences between Jawaharlal Nehru and Vallabhbhai Patel. It was less a clash of personalities as it was a clash of ideologies. The Sardar espoused a more robust and practical nationalism, and laissez faire economic policies. Nehru wanted to dismantle the colonial bureaucratic system but Patel wanted to retain the centralized civil service structure, the price for which we are still paying. Nehru was more internationalist, more leftist than realist, and preferred central planning to free market policies.
Their policy inclinations were as different as chalk and cheese. But both were patriots tempered by the nationalist movement and both were popular leaders of the Congress rank and file, and the nation as a whole. Above all both were thorough gentlemen and whatever their differences never disrespected each other and subverted each other with factional intrigue. They preferred a moderation in language that would now been seen as a sign of weakness. They preferred to conciliate rather than divide.
It is also well known that after the death of Sardar Patel, something akin to a purge took place in the Congress and the Congress leaders who preferred to support the policies and politics espoused by the Sardar were shown their place or shown the door. The party donned socialist colours and its transformation was complete.
With this physical purge, the intellectual purge of the Congress party also gathered pace, and Sardar Patel was practically airbrushed out of the Congress pantheon. For all practical purposes Sardar Patel became anathema for the Congress party, particularly after the advent of Indira Gandhi. It's another matter that after its ideological peregrinations for half a century, the Congress party returned to the very same laissez faire economics favored by Patel and rejected by Nehru.
Congress leaders, who now claim to be legatees of Sardar Patel, would hardly know of him and what he stood for. For a start their language is different. Those days they belonged to a very different school of politics. Politics was about policies and grand ideas. To qualify in politics nowadays, one has to be a graduate of the school for scoundrels, where sycophancy and personality worship are the main attainments needed.
Sardar Patel had a thriving law practice he abandoned to heed the Mahatma's call, Jawaharlal Nehru was a superbly educated and highly evolved personality, and politics to him was a calling, not an occupation. Neither Narendra Modi nor Rahul Gandhi has much in them to claim such legacies. They are symptomatic of the sad days that have befallen the nation midwifed and contemplated by Nehru and Patel.
*Well-known public policy expert. Source: Author's Facebook timeline. Email: mohanguru@gmail.com
Culture Development Governance People Politics Society
Labels: Culture Development Governance People Politics Society
"Massive" turnout for all-India protest against pr...
Jharkhand govt's "forced" land acquisition for Ada...
Around 90 activists arrested ahead of Modi's Statu...
Statue of Unity? Expressionless, unconcerned with ...
Deepak Debnath: 30th person to commit suicide on b...
Tata Mundra case: US Supreme Court to hear whether...
Anti-bullet train campaign: Opposition parties see...
Sardar Patel became anathema for Congress, particu...
Bullet train: Just one hectare acquired out of 1,4...
Statue of Unity: Sardar would have been "uncomfort...
Out of 190 Goan panchayats, 140 have passed resolu...
There is robust evidence: BJP govt is using UAPA t...
India's majoritarian politics is "demonising" Muslims
Dismay over Delhi Varsity decision to drop Kanchi ...
South Korean NGOs protest Seoul Peace Prize to Mod...
Caste and regional divide "replacing" Gujarat's co...
Sabarimala and #MeToo: Cases of sexual abuse of ma...
Kerala temple managers should liberate women from ...
Dongaria Kondhs demand immediate halt to Odisha po...
Bank account frozen, raid on Amnesty office: Govt ...
Haridwar Professor-Swami's death was "mob lynching...
India's influential people are "practicing" seven ...
15% India is undernourished, as Rs 50,000 crore fo...
Challenging Article 35-A: A BJP "assault" on speci...
Revolutionary books by Pansare released at NAPM ya...
Memorandum to Gujarat govt demands for separate da...
29th "NRC-related" suicide in Assam, as Nirod Bara...
When radical lawyer-activist Girish Patel's prophe...
#MeToo movement: Justice eludes Bhanwari Devi for ...
#MeToo moment in Hyderabad Urdu varsity? Two girl ...
NAPM yatra pays tribute to India's first anti-dam ...
#MeToo petition seeks internal complaint committee...
Vadodara redevelopment "polluting" river Vishwamit...
Chemical waste being "dumped" in Bharuch from outs...
Focus on environmental, livelihood issues as secon...
Post-MJ Akbar resignation: #MeToo movement and fea...
National TUs' betrayal? Birla-Century workers seek...
Gujarat BJP MLAs, youth leader "incited" attack on...
India's polluted stretches along rivers rise from ...
J&K Governor's rule: BJP's "failure" to go ahead w...
Sanjiv Bhatt's arrest in 22 years old case: Govt l...
Instead of alleviating poverty, Govt of India impo...
Govt of India "fails" to recognize: Muslims are ed...
Fight for conserving Ganga far from over: Priests ...
Asiatic lion falls prey to Gujarat's "parochial" p...
Probe sought into "fraudulent" corporate transfer...
When Sardar Patel opposed reservation, asked Sched...
Opposition, land rights network come together, dem...
Mining in India has mostly taken place in common g...
Almost total impunity for "enforced" disappearance...
Whither mandatory 'rural bonds'? With few doctors ...
Martyred priest who was "critical" of Church for e...
Legacy of Gujarat's 13-yrs Modi rule: Three of Ind...
Allow journos to freely report from both sides of ...
Hyderabad Urdu Varsity vice-chancellor curtailing ...
Punjab blasphemy law "violates" Constitution, is "...
Eco-campaigner's death: File FIR against Modi, Gad...
World Bank's bad business? Modi govt's pro-corpora...
Ganga flows… with blood? Eco-crusader passes away ...
CJP asks NHRC to monitor Varanasi Church attack, u...
13.7% adult India suffers from mental morbidity: A...
Poverty, social reasons force 20% UP children to ...
Forced to sign blank paper, cops detain, "falsely ...
Girish Patel was an ardent supporter of Narmada da...
Marginalized communities "excluded" from World Ban...
Uproot BJP govt: NAPM yatra exhorts people in Raja...
Adivasi peace march to hold "dialogue" despite Mao...
Raise percentage of reservation in promotion for S...
Violence is permeating into key areas of Indian so...
UP encounters: Not only people are being killed wi...
Sagar Rabari resigns as secretary, Khedut Samaj, G...
Ahmedabad, GIFT, Adani city get 1.68 lakh acre ft ...
Minimum Support Price satyagraha to start on Oct 8...
Judgment to deport seven Rohingiyas a dark day for...
India to deport Rohingya refugees, as the world mo...
An elite Kutir set up by Modi far from the "maddin...
Save the Constitution campaign highlights "indiscr...
Only Gandhi "engaged" with untouchability, not Tag...
NAPM's cross country yatra begins at Dandi against...
Maharashtra MLAs refuse to meet Mahul residents s...
Big dams lead to "tremendous losses" to environmen...
History less known: Kasturba's role as an independ...
Mahul pipeline affected residents to gherao MLAs, ...
44% of those employed in organized manufacturing a...


n+i network: The "n+i" network is a consortium of 70 French engineering Grandes Ecoles, which have chosen to pool their international co-operation actions.
Campus France: Under the supervision of the ministerial authorities and in cooperation with the higher-education establishments and their Conferences, the aim of Campus France is to promote French higher education courses throughout the world and offer foreign students a successful means of accessing higher education in France, from the country of departure to France, from first information until they arrive in France and then return to their countries of origin. As such, Campus France, in partnership with all those involved, has set up a Quality Charter for the reception of all foreign students.
ESTACA has special interest in developing its network with schools and universities around the globe. Thanks to our academics partners, we can send more than 100 students by year, and welcome students as well to increase the cultural diversity of our campuses.
ESTACA partners are located around the Globe.


Large-capacity laundry bag holds loads of uniforms, linens and shop rags.
Drawstring top with cord lock.
Fits most standard hampers and sorter frames.
Mesh Laundry Bag - Breathable polyester mesh minimizes odor when filled with damp or wet laundry.
Cotton Laundry Bag - Strong, durable 100% cotton hides dirty tablecloths and napkins.


Equibase, LLC released its year-end report on economic indicators in Thoroughbred racing. From 2016 to 2017, wagering on U.S. races increased, up by 1.59%, while purses declined by 0.37%. The number of race days in the U.S. fell to 4,573 in 2017, a drop of 2.06%; the number of races declined 1.71%.
Equibase's economic indicators show similar results in December 2016 from the same month in 2016. Total wagering for the month was up 3.85%, accounting for over $744 million. U.S. purses also were higher, up 5.74%, while the number of race days declined by 1.08% from December of 2016.
This entry was posted in NL List, The Biz and tagged economic indicators, equibase, Horse Racing, racing's economic indicators, thoroughbred by Paulick Report Staff. Bookmark the permalink.


The rate of childhood cancer has slowly increased over the last three decades, research has found.
The International Agency for Research on Cancer, based in France, examined data from 19 European countries.
It found cancer rates increased by around 1% a year for children, and 1.5% a year for adolescents between the 1970s and 1990s.
The research, which stresses cancer before age 20 is still rare, is published in The Lancet.
It is likely that a complex combination of environmental and genetic factors are involved.
The scientists say no single factor can be held responsible for the rise, and the underlying causes are likely to be highly complex.
But they suggest lack of exposure to infections and an increase in average birth weight may play a role, as may mixing of different populations.
Some - but not all - of the rise might be explained by better diagnosis of the disease, and better record keeping.
They analysed 113,000 cancers in children, and over 18,000 cancers in adolescents during the 1970s, 1980s and 1990s.
They found the incidence rate by the 1990s was 140 per million for children and 193 per million for adolescents.
The increases were recorded for virtually all tumour types in children.
Carcinomas that develop in tissues covering or lining organs of the body, such as the skin, the uterus, the lung, or the breast.
Lymphomas that develop in the lymphatic system, such as Hodgkins disease.
Soft tissue sarcomas that begin in the muscle, fat, fibrous tissue, blood vessels, or other supporting tissue of the body.
Germ-cell cancers that develop in the testicles or ovaries.
Tumours of the central nervous system.
Over the three decades studied survival rates increased substantially, reaching a five-year survival rate of 75% for children in western Europe, and 64% in eastern Europe.
Survival rates for adolescent patients were similar.
Lead researcher Dr Eva Steliarova-Foucher said: "Our results are clear evidence of an increase of cancer incidence in childhood and adolescence during the past decades, and of an acceleration of this trend."
She added: "We can only speculate about the possible factors of this increase, based on results of other research studies.
"But several studies have shown an association of the increased risk of leukaemia with high birth-weight.
"Results concerning the age at bearing children are not consistent among studies, but some have shown the risk increase with young and advanced maternal age and advanced paternal age. Reducing crowded housing postpones early infections, and was shown to be associated with increased leukaemia risk. On the contrary, the attendance to day care apparently reduces this risk. These factors are also indicators of development of socio-economic status, which supports the finding of increasing incidence of leukaemia with increasing socio-economic status. Vaccinations can have double effect on the incidence. Studies of vaccination against tuberculosis (BCG) have shown reduced risk of childhood leukaemia, but also an excess of some lymphomas, occurring later in life.
Professor John Toy, medical director at the charity Cancer Research UK, said: "Childhood cancer is uncommon but when it does occur it is devastating for all those involved.
"While it is good news that survival is dramatically improving the increase in incidence rates reported in this study are a cause for concern.
"The study shines light on some possible causes for the increase, such as population mixing and socioeconomic status.
"It is essential that researchers investigate these leads in order to develop future prevention strategies.
"It is likely that a complex combination of environmental and genetic factors are involved."
Also writing in The Lancet, Dr Catherine Cole, of the Princess Margaret Hospital for Children in Perth, Australia, said most children with cancer lived in developing countries.
And while 80% of children with cancer survived in the west, most in developing countries die from lack of medical care.
"The challenge now is to ensure equity of access to cancer care for all children.
"Centres of excellence should be developed in low-income countries to train staff."


text:
Vietnam War map: Corps to corps (1968)
A classic chocolate fudge truffle cheesecake recipe
Land comforts while at sea: Stories touting the Titanic's luxurious accommodations (1911)
4 festive Halloween party table decorations & menu plans (1912)
See the first version of the Corvette, which made its debut back in 1953
See how they had to remove snow 100 years ago
"Sleeping Beauty" – the classic animated movie – deemed a top Disney triumph (1959)
Corn pie with ground beef crust: A good old-fashioned dinner recipe from the '40s
Old-fashioned Grape Nuts stuffing recipes
Vintage IBM electric typewriters from the '60s, including the Selectric with swappable round print heads
Presenting the insanely indulgent Milky Wonder Cake: A retro recipe for this super-sweet Bundt cake made with nine Milky Way chocolate bars. Yep.
Remember those amazing old wooden library card catalogs – and how to use them? Look it up!
Some of 1974's best buys in antique toys
1970s, Vintage family & old-fashioned parenting, Vintage homes & gardens, Vintage magazines, Vintage toys & old-fashioned games
Today's best buys in antique toys
Antique toys are double-barreled delights. They arouse pleasant remembrances and reflect good design. If you're Christmas-gift shopping and are willing to spend $10 to $95, the choices are rich. Look for toys made between 1860 and 1920. Earlier ones are too hard to find; later ones, less appealing.
The examples we show are from the antique toy department of FAO Schwartz, New York.
The monkey [at right], a mechanical bank, tips its hat when a coin is dropped into the slot. The bank, made sometime after 1880, is of stamped iron — a budget substitute for heavier cast iron. You should be able to find a bank like this one for about $30.
$10 buys this toy soldier dressed in 18th-century uniform, though he's probably a product of the 19th century, when historical models became very popular. He could as easily be a drummer in the French and Indian Wars as in the American Revolution. Aside from rare earlier examples, toy soldiers are part of a tradition begun in the 1700s. Germany made flat models; France, dimensional ones. Tin and lead alloys were used until recently. The hollow-casting technique, which made metal figures lighter and less costly, was introduced by an English manufacturer about 1890.
$30 is what you'll pay for Autograph Authors, one of innumerable card and board games introduced after 1860. For this price you'll receive an impressive supply of portraits of significant American authors of the 1880s. All are sure to be as enjoyable to look at now as the game was once to play. They are done in a realistic style typical of magazines of the period. An old game may not be practical for playing, but owning it provides an appealing — and amusing — interpretation of the styles of yesterday.
$70 is the price of this set of mini "bentwood" furniture. It was designed for a child to use when playing with dolls and is beautifully inconsistent in detail — a refreshing contrast to the more sophisticated work intended for adult appreciation. Besides using wood, turn-of-the-century toy furniture craftsmen occasionally used paper and metal. This set reflects the charm of life-size designs that were fashionable in rustic country cabins.
MORE 3 amazing homemade fudge recipes, minus the chocolate (1970)
$70 is not unreasonable for a realistic ceramic baby doll from the period just after World War I. The idea of making children's dolls dates from about 1850, but first efforts were simply small-scale versions of adult figures, extremely well-dressed. About 50 years ago, a number of sculptors took pains to determine what was characteristic of babies physically, and dolls like this one were the result. Early examples of doll figures are rarer and more costly.
$75 would be a good buy for this barnyard scene in miniature, because it shows off the wood-carver's skills so beautifully. We picture only a portion of the set, which includes other trees and people and many more pairs of farm animals, all of which have the charm of folk art. These wood figures were a specialty of German carvers of the late 19th century, but American and Scandinavian craftsmen did similar work on occasion.
$90 is a fair price for a set of picture blocks that children played with as puzzles and also as building blocks in the 1880s. Each wood square is covered with six different picture pieces, which when put together create six city scenes. New York, Venice, London and Paris are readily identifiable, but others from the Near and Far East are not easy to recognize — or put together. The scenes — lithographs done in the spirit of such printmakers as Currier and Ives — appealed to the public's expanding interest in color.
$95 will purchase this particularly attractive mini tea set from the mid-19th century. It duplicates both a shape and a pattern that were popular in the 1790s. The wide interest in doll houses, beginning in the late 18th century, inspired potters everywhere to produce small-scale wares. If there is a collector on your Christmas list and you have time to shop widely, you will find antique miniatures of just about every type of pottery made.
MORE Dick Van Dyke: Interviews, insights & images from the long career of a multi-talented star
-Marvin D. Schwartz
17 wild & wonderful watermelon recipes (1972)
George R R Martin before Game of Thrones: Early work you have probably never seen, plus his first reviews
How to make a space-saving guest wall for visitors (1961)
Categories: 1970s, Vintage family & old-fashioned parenting, Vintage homes & gardens, Vintage magazines, Vintage toys & old-fashioned games
Source: American Home
Original publication date: December, 1974
Tags: 1860, 1880, 1890, 1974, antiques, collections, dolls, history on history, puzzles, vintage toys
Added or last updated: October 18, 2013
See cute vintage baby nursery furniture & bedroom decor they had in the fifties
Tiny Tears, the doll that cries real tears (1952)


"It's never too late to be what you might have been," is a well-known quote by George Eliot (Mary Anne Evans). I interpret her message as encouragement to seek personal growth and find one's authentic self, however long it takes.
It is never too late to grow new roots, new life . . . to bloom.
This entry was posted in Uncategorized and tagged inspiration, spiritual on September 24, 2013 by jlvickers2013.


Malware Analysts support USCYBERCOM Cyber Operations (J3) as part of our mission to provide cyber-focused support for the current and growing mission areas to defending DoD Information Networks, provide support to Combatant Commanders for execution of their missions around the world, and strengthen our nation's ability to withstand and respond to a strategic cyber-attack. Media, Malware and Analysis (MMA) tasking includes the forensic analysis of media and software reverse engineering. The analysis consists of reviewing the contents of a compromised system, documenting unusual files and data, and identifying the TTPs used by an adversary to gain unauthorized access to DODIN assets. This includes detailed technical work on media analysis and exploitation of data from compromised systems in support of ongoing analysis.


Gold Cyanide, Wholesale Various High Quality Gold Cyanide Products from Global Gold Cyanide Suppliers and Gold Cyanide Factory,Importer,Exporter at . hot sale gold cyanide stirred tank/mineral mining machine agitation leaching tank .. Gold Mining Equipment Gold CIL Plant/Gold cyanide plant with 300tpd price.
Gold extraction by cyanidation: The overflow of stage two classification hydrocyclone entered into cyanide leaching system after thickening for leaching. 5. Desorption . 7. Safety: With three security measures, system intelligent, automatic limit pressure and pressure release mechanism, safety valve. Product Description.
The top supplying country is China (Mainland), which supply 100% of gold mining cyanide leaching tank respectively. Gold mining cyanide leaching tank products are most popular in Africa, Domestic Market, and South Asia. You can ensure product safety by selecting from certified suppliers, including 129 with ISO9001,.
Gold Leaching Plant, Wholesale Various High Quality Gold Leaching Plant Products from Global Gold Leaching Plant Suppliers and Gold Leaching Plant Factory,Importer,Exporter at Alibaba . . China Gold Extraction Plant , Gold Leaching Plant . High Quality Gold Cyanide Leaching Tank for CIL Plant Equipment.
Sodium Cyanide Gold Recovery / Sodium Cyanide Gold Mining Extraction Plant , Find Complete Details about Sodium Cyanide Gold Recovery / Sodium Cyanide Gold Mining Extraction Plant,Sodium Cyanide Gold Extraction,Sodium Cyanide Gold Mining Extraction,Sodium Cyanide Gold Recovery from Mineral Separator.
Small Mineral Recovery Machine Gold Leaching Methods,Sodium Cyanide Gold Extraction , Find Complete Details about Small Mineral Recovery Machine Gold . In gold electrowinning process,when the electrolysis equipment is added with anions which are more easily absorbed by activated carbons, Au(CN)2 is.
Gold Cyanide Leaching Tank, Wholesale Various High Quality Gold Cyanide Leaching Tank Products from Global Gold Cyanide Leaching Tank Suppliers . gold mining equipment agitated tank leaching cyanide gold process leaching tanks .. Gold Mining Equipment Gold CIL Plant/Gold cyanide plant with 300tpd price.
What is the Cyanide Gold Mining? Cyanide extraction of gold may be used in areas where fine gold bearing rocks are found. Sodium cyanide solution is mixed with finely ground rock that is proven to contain gold or silver, and is then separated from the ground rock as gold cyanide or silver cyanide solution. Zinc is added to.
Gold Processing Machines Cip Production Line,Small Gold Mining Plant , Find Complete Details about Gold Processing Machines Cip Production Line,Small Gold Mining Plant,Gold Processing Machine,Gold Mining Processing Machine,Gold Mining Plant from Other Mining Machines Supplier or Manufacturer Shandong.
Rock Ore Gold Mining Machine /Gold Mining Equipment With Carbon In Leaching Process. US $40000.0 40000.0 / Set. 1 Set (Min. Order). Zhengzhou Hengxing Heavy Equipment Co., Ltd. Add to Favorites. Rock gold CIP plant / CIP gold mining / CIP gold mining recovery process. Add to Compare. Response Rate: 94.1%.
Leaching Tank Machine For Gold Extracting Equipment Buy .
Gold cyanide equipments leaching tank used in CIL plant to extract .
Gold Cyanide Equipments Leaching Tank Used In Cil Plant To Extract Gold , Find Complete Details about Gold Cyanide Equipments Leaching Tank Used In Cil Plant To Extract Gold . We sincerely welcome friends from all over the world to visit our company and cooperate with us on the basis of long term mutual benefits.
Rock Gold Processing Plant, Wholesale Various High Quality Rock Gold Processing Plant Products from Global Rock Gold Processing Plant Suppliers and Rock Gold Processing Plant Factory . Rock Ore Gold Mining Plant With Flotation Separating Process . Rock Gold Ore Extraction Plant with Cyanide Leaching Process.
Gold Leaching Tank, Wholesale Various High Quality Gold Leaching Tank Products from Global Gold Leaching Tank Suppliers and Gold Leaching Tank Factory,Importer . gold mining equipment agitated tank leaching cyanide gold process leaching tanks . High Quality Double Impeller gold leaching tank with agitator.
The reason why not use the method D (resin adsorption column) alone since it is used in all combination is that gold recovery from Resin adsorption in E . in gold mining and precious metals recovery from waste electronic devices while aiming to replace the widely used but acute toxic sodium cyanide in gold extraction.