Lord Hodgson of Astley Abbotts: My Lords, do these measures apply to AIM companies and what is the position of foreign companies listed on the London Stock Exchange? I do not believe I had a response to those two matters.
Lord Sainsbury of Turville: My Lords, may I come back to the noble Lord on those matters? As I said, there are very many issues here which apply in different ways. I shall write to the noble Lord.
Lord Sheldon: My Lords, I am not a director now, but I have been in the past. I am concerned about the role of non-executive directors. Some years ago a Permanent Secretary at the Department of Trade, having retired, was offered a non-executive directorship at one of the largest of the listed companies in this country. Nothing happened and he wondered why. He was told that the chairman had said that he would not have him because he would ask too many awkward questions.
When someone as competent as that—and he was an outstanding Permanent Secretary—receives that kind of reaction, it makes one worry about the kind of situation he was likely to have entered into. There is a need to strengthen the independence of a number of the non-executive directors. I would welcome that.
The legislation is obviously going to be very complex. Can my noble friend say anything about that?
Lord Sainsbury of Turville: My Lords, the independence of non-executive directors is a very important question. In order to protect my back, I take it absolutely sine qua non that a Permanent Secretary would be an excellent addition to any board. That is obviously unarguable. The Higgs report is about giving a much stronger position to the non-executive directors and much clearer independence. But in answer to the noble Lord's question, it is also a process by which they are chosen not on the whim of a chairman but through due process, which will widen the selection and make it more transparent.
Lord Williamson of Horton: My Lords, I declare an interest as a hard-working, non-executive independent director of Whitbread PLC and a member of its audit committee for a long time.
the noble Lord, Lord Razzall, that the proof of the pudding is in the eating because it is a voluntary system although it underpins the listing requirements. We need to give a lot of attention to this matter.
Does the Minister agree that with the many reports which we have had on governance, including the Higgs report, we have to be careful not to get ourselves into a position where we believe that every recommendation is automatically right. Some of the recommendations can be legitimately challenged on grounds of efficiency and how business should be conducted. For example, should a senior non-executive member of a board be appointed so that he can have further contact with shareholders? There are other ways to do that, and it is important not to get ourselves into the position of thinking that everything in a report must be adopted automatically. Some things can be done better in other ways.
Lord Sainsbury of Turville: My Lords, if the noble Baroness would like to answer the question, I am more than happy for her to do so. She is probably more qualified.
Much of the Statement meshes together. As important as distinctions between audit and non-audit work are, that question is in the context of the Smith report and its strengthening of the audit committee. The committee will have the say on the matter. That its independence has been greatly strengthened by the Smith report is very relevant.
We did not say that we would accept every recommendation of the Higgs report, but we looked at it carefully. It is an excellent report. We are impressed with the recommendations and will take them forward.
Baroness Noakes: My Lords, I apologise for jumping the gun. My eagerness on the subject overcame me. I declare a couple of interests as a non-executive director of listed companies, a member of audit committees and a member of the Institute of Chartered Accountants, although fortunately no longer an office holder.
I start by asking the Minister about costs. The Statement says that there will need to be more investment in the new regulatory arrangements and that the Government will pay their share. However, it is silent on how much those costs will be and how much the Government are prepared to contribute. I assume that they have not signed a blank cheque on that. Will he give us some more information?
Related to that is the impact of all the changes on audit costs. Is the Minister aware that audit firms in the US are talking about audit costs rising a minimum of 25 per cent, and often much more, to deal with the equivalent regulatory changes there? Do we think that there will be a similar impact on costs in particular? Have the Government thought about the impact of costs not on the larger plcs, but at the smaller end of the scale, which is the engine room of growth?
Finally, will the Minister say what the Government have achieved, if anything, in ameliorating the impact of Sarbanes/Oxley on dual-listed companies that have their main listing in this country?
Lord Sainsbury of Turville: My Lords, I cannot say much more about the costs of the Financial Reporting Council, including the foundation of functions. Clearly, we will try to proceed in the most cost-effective way, and the FRC will consult contributors, the Government, industry and the profession on firm budgetary estimates of its running costs. We think that the FRC's core annual running costs should be broadly shared by the Government, business and the profession, with two exceptions. The cost of cases heard by the investigation and discipline board should fall to the professional bodies concerned, and the cost of inspection by the independent audit inspection unit should be met by the audit firms. In both cases, that reflects the current position.
In terms of the impact on audit costs, one needs to keep a firm view on the end objective of the whole process, which is to make certain that company accounts are trusted by investors of all kinds. If that does not take place, we are in a serious situation in terms of the functioning of the capital markets. If that involves some extra expenditure but leads to trust in accounts, that would be money well spent.
The SEC is showing a welcome sensitivity to foreign concerns and to some issues arising from Sarbanes/Oxley on corporate governance, non-audit services and rotation of audit partners, in response to the pressure from the UK and the European Commission. We pointed out that sometimes the regulations do not turn out well, and there is sensitivity to some of those issues.
Lord Carlile of Berriew: My Lords, I apologise to the Minister for missing the first moments of his Statement.
Bearing in mind that the curse of many disciplinary tribunals is delay, does the Minister support the hope and expectation that the investigation and discipline board will be expected to create protocols that enable it to act quickly? Also, does he support the hope that it will have interlocutory powers and, where there are criminal investigations—such as by the Serious Fraud Office, which can be long delayed—disciplinary proceedings will not necessarily have to await the conclusion of criminal investigations?
Lord Sainsbury of Turville: My Lords, if I may say so, that is slightly jumping the gun in terms of where we have got to on the process. All the points that the noble Lord has made are in principle highly desirable but, in terms of where we have got to, I would jump the gun if I assured the House that all that would definitely take place.
Lord Naseby: My Lords, I declare an interest as a non-executive director of three companies—one listed, one mutual and one large private company.
The Minister made no mention of mutuals, at least two of which, Standard Life and Nationwide, would probably fall into the FTSE 100 if they were listed. Would the proposals affect the mutual sector as well? The Minister mentioned large charities. Is there a definition of a large charity?
My third question relates to Europe. None of us should ignore the fact that as we sit on our varying boards we not only have to cope with the FSA and its continuing consultation documents but increasingly have to take into view what is happening in Europe. Can we have confidence that Her Majesty's Government will not produce recommendations that then have to be amended two years on because of data or instructions coming out of Europe that we should have known about already?
Lord Sainsbury of Turville: My Lords, on the first question I would have to say what I said originally. What we have been talking about is an enormous and substantial package of proposals. They apply in different ways to different kinds of organisation. I cannot give a simple answer for mutuals or anything else without going through all the proposals and saying how they would impact on them.
So far as international standards are concerned, a lot of work is now taking place to make it certain that UK accounting standards are brought in line with international standards. In the world in which we live, that is clearly of increasing importance.


text:
package net.nunoachenriques.vader;

import net.nunoachenriques.vader.lexicon.English;
import net.nunoachenriques.vader.lexicon.Language;
import net.nunoachenriques.vader.text.Properties;
import net.nunoachenriques.vader.text.Tokenizer;
import net.nunoachenriques.vader.text.TokenizerEnglish;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
The SentimentAnalysis class is the main class for VADER Sentiment Analysis.
 * Since version 2.0 is multi-language ready and Android ready! Use cases:

 *
 *
I. Several samples, same language.

 *

 * ...
 *
 * SentimentAnalysis sa = new SentimentAnalysis(new TokenizerEnglish(), new English());
 * Map<String,Float> sp;
 * String s1 = "VADER is smart, handsome, and funny!";
 * String s2 = "VADER sometimes fails too as everyone else!";
 *
 * sp = sa.getSentimentAnalysis(s1);
 * System.out.println(s1 + " *** " + sp.toString());
 * sp = sa.getSentimentAnalysis(s2);
 * System.out.println(s2 + " *** " + sp.toString());
 *
 * ...
 *

 *
 *
II. Several samples, multiple languages.

 *

 * ...
 *
 * SentimentAnalysis sa = new SentimentAnalysis();
 * Map<String,Float> sp;
 * String s1 = "VADER is smart, handsome, and funny!";
 * String s2 = "VADER por vezes falha como todas as pessoas!";
 *
 * sp = sa.getSentimentAnalysis(s1, new TokenizerEnglish(), new English());
 * System.out.println(s1 + " *** " + sp.toString());
 * sp = sa.getSentimentAnalysis(s2, new TokenizerPortuguese(), new Portuguese());
 * System.out.println(s2 + " *** " + sp.toString());
 *
 * ...
 *

 *
 * @author Nuno A. C. Henriques [nunoachenriques.net]
 * @see VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text
 */
public class SentimentAnalysis {

    // Available languages (e.g., "en").
    // TODO automatic detection of all languages?!
    private static final List<String> LANGUAGES = Collections.singletonList("en");

    private String text;
    private Language language;
    private Tokenizer tokenizer;
    private Properties textProperties;

    /**
     * Default constructor with all parameters {@code null}.
     */
    @SuppressWarnings("WeakerAccess")
    public SentimentAnalysis() {
        text = null;
        language = null;
        tokenizer = null;
        textProperties = null;
    }

    /**
     * Sets two required parameters: tokenizer and language. All the others
     * initialize as {@code null}.
     *
     * @param l The text {@link Language}
     *          (e.g., {@link net.nunoachenriques.vader.lexicon.English}).
     * @param t The text {@link Tokenizer} to be used
     *          (e.g., {@link net.nunoachenriques.vader.text.TokenizerEnglish}).
     */
    @SuppressWarnings("WeakerAccess")
    public SentimentAnalysis(Language l, Tokenizer t) {
        text = null;
        language = l;
        tokenizer = t;
        textProperties = null;
    }

    /**
     * Does the sentiment analysis of the given text sample and returns
     * the polarity values.
     *
     * @param s Text sample to analyse.
     * @return The list of positive, neutral, negative, and compound name-value
     * pairs.
     */
    public Map<String, Float> getSentimentAnalysis(String s) {
        text = s;
        textProperties = new Properties(s, language, tokenizer);
        return getPolarity();
    }

    /**
     * Does the sentiment analysis of the given text sample and returns
     * the polarity values.
     *
     * @param s Text sample to analyse.
     * @param l Language of the text sample to analyse.
     * @return The list of positive, neutral, negative, and compound name-value
     * pairs.
     */
    public Map<String, Float> getSentimentAnalysis(String s, String l) {
        switch (l) {
            case "en":
                language = new English();
                tokenizer = new TokenizerEnglish();
                break;
        }
        return getSentimentAnalysis(s);
    }

    /**
     * Does the sentiment analysis of the given text sample, using the specified
     * tokenizer, the specified language parameters, and returns the polarity
     * values.
     *
     * @param s Text sample to analyse.
     * @param l The text {@link Language} (e.g., {@link English}).
     * @param t The text {@link Tokenizer} to be used (e.g., {@link TokenizerEnglish}).
     * @return The list of positive, neutral, negative, and compound name-value
     * pairs.
     */
    public Map<String, Float> getSentimentAnalysis(String s, Language l, Tokenizer t) {
        tokenizer = t;
        language = l;
        return getSentimentAnalysis(s);
    }

    /**
     * Gets the languages available for the sentiment analysis process.
     *
     * @return List of available languages in ISO 639-1 or 639-3 language code
     * (e.g., en).
     */
    public List<String> getAvailableLanguages() {
        return LANGUAGES;
    }

    // TODO hardcoded values (0.95f, 0.9f) to Constant?!
    private Map<String, Float> getPolarity() {
        List<Float> sentiments = new ArrayList<>();
        List<String> wordsAndEmoticons = textProperties.getWordsAndEmoticons();
        final Map<String, Float> boosterDictionary = language.getBoosterDictionary();
        final Map<String, Float> valenceDictionary = language.getWordValenceDictionary();

        for (String item : wordsAndEmoticons) {
            float currentValence = 0.0f;
            int i = wordsAndEmoticons.indexOf(item);

            // TODO English language dependent!
            if (i < wordsAndEmoticons.size() - 1
                    && item.toLowerCase().equals("kind")
                    && wordsAndEmoticons.get(i + 1).toLowerCase().equals("of")
                    || boosterDictionary.containsKey(item.toLowerCase())) {
                sentiments.add(currentValence);
                continue;
            }

            String currentItemLower = item.toLowerCase();
            if (valenceDictionary.containsKey(currentItemLower)) {
                currentValence = valenceDictionary.get(currentItemLower);
                if (language.isUpper(item) && textProperties.isCapDifferential()) {
                    currentValence = (currentValence > 0.0) ? currentValence + Constant.ALL_CAPS_BOOSTER_SCORE : currentValence - Constant.ALL_CAPS_BOOSTER_SCORE;
                }
                int startI = 0;
                float gramBasedValence;
                while (startI < 3) {
                    int closeTokenIndex = i - (startI + 1);
                    if (closeTokenIndex < 0) {
                        closeTokenIndex = pythonIndexToJavaIndex(closeTokenIndex);
                    }
                    if ((i > startI) && !valenceDictionary.containsKey(wordsAndEmoticons.get(closeTokenIndex).toLowerCase())) {
                        gramBasedValence = valenceModifier(wordsAndEmoticons.get(closeTokenIndex), currentValence);
                        if (startI == 1 && gramBasedValence != 0.0f) {
                            gramBasedValence *= 0.95f;
                        }
                        if (startI == 2 && gramBasedValence != 0.0f) {
                            gramBasedValence *= 0.9f;
                        }
                        currentValence += gramBasedValence;
                        currentValence = checkForNever(currentValence, startI, i, closeTokenIndex);
                        if (startI == 2) {
                            currentValence = checkForIdioms(currentValence, i);
                        }
                    }
                    startI++;
                }
                if (i > 1 && !valenceDictionary.containsKey(wordsAndEmoticons.get(i - 1).toLowerCase()) && wordsAndEmoticons.get(i - 1).toLowerCase().equals("least")) {
                    if (!(wordsAndEmoticons.get(i - 2).toLowerCase().equals("at") || wordsAndEmoticons.get(i - 2).toLowerCase().equals("very"))) {
                        currentValence *= Constant.N_SCALAR;
                    }
                } else if (i > 0 && !valenceDictionary.containsKey(wordsAndEmoticons.get(i - 1).toLowerCase()) && wordsAndEmoticons.get(i - 1).equals("least")) {
                    currentValence *= Constant.N_SCALAR;
                }
            }
            sentiments.add(currentValence);
        }
        sentiments = checkConjunctionBut(wordsAndEmoticons, sentiments);
        return polarityScores(sentiments);
    }

    private float valenceModifier(String precedingWord, float currentValence) {
        float scalar = 0.0f;
        final Map<String, Float> boosterDictionary = language.getBoosterDictionary();
        String precedingWordLower = precedingWord.toLowerCase();
        if (boosterDictionary.containsKey(precedingWordLower)) {
            scalar = boosterDictionary.get(precedingWordLower);
            if (currentValence < 0.0) {
                scalar *= -1.0;
            }
            if (language.isUpper(precedingWord) && textProperties.isCapDifferential()) {
                scalar = (currentValence > 0.0) ? scalar + Constant.ALL_CAPS_BOOSTER_SCORE : scalar - Constant.ALL_CAPS_BOOSTER_SCORE;
            }
        }
        return scalar;
    }

    private int pythonIndexToJavaIndex(int pythonIndex) {
        return textProperties.getWordsAndEmoticons().size() - Math.abs(pythonIndex);
    }

    // TODO hardcoded values (1.5f, 1.25f) to Constant?!
    private float checkForNever(float currentValence, int startI, int i, int closeTokenIndex) {
        List<String> wordsAndEmoticons = textProperties.getWordsAndEmoticons();
        final List<String> negativeWords = language.getNegativeWords();
        if (startI == 0) {
            if (isNegative(new ArrayList<>(Collections.singletonList(wordsAndEmoticons.get(i - 1))), negativeWords)) {
                currentValence *= Constant.N_SCALAR;
            }
        }
        if (startI == 1) {
            String wordAtDistanceTwoLeft = wordsAndEmoticons.get(i - 2);
            String wordAtDistanceOneLeft = wordsAndEmoticons.get(i - 1);

            // TODO English language dependent!
            if ((wordAtDistanceTwoLeft.equals("never"))
                    && (wordAtDistanceOneLeft.equals("so")
                    || (wordAtDistanceOneLeft.equals("this")))) {

                currentValence *= 1.5f;
            } else if (isNegative(new ArrayList<>(Collections.singletonList(wordsAndEmoticons.get(closeTokenIndex))), negativeWords)) {
                currentValence *= Constant.N_SCALAR;
            }
        }
        if (startI == 2) {
            String wordAtDistanceThreeLeft = wordsAndEmoticons.get(i - 3);
            String wordAtDistanceTwoLeft = wordsAndEmoticons.get(i - 2);
            String wordAtDistanceOneLeft = wordsAndEmoticons.get(i - 1);

            // TODO English language dependent!
            if ((wordAtDistanceThreeLeft.equals("never"))
                    && (wordAtDistanceTwoLeft.equals("so") || wordAtDistanceTwoLeft.equals("this"))
                    || (wordAtDistanceOneLeft.equals("so") || wordAtDistanceOneLeft.equals("this"))) {

                currentValence *= 1.25f;
            } else if (isNegative(new ArrayList<>(Collections.singletonList(wordsAndEmoticons.get(closeTokenIndex))), negativeWords)) {
                currentValence *= Constant.N_SCALAR;
            }
        }
        return currentValence;
    }

    private float checkForIdioms(float currentValence, int i) {
        List<String> wordsAndEmoticons = textProperties.getWordsAndEmoticons();
        final String leftBiGramFromCurrent = String.format("%s %s", wordsAndEmoticons.get(i - 1), wordsAndEmoticons.get(i));
        final String leftTriGramFromCurrent = String.format("%s %s %s", wordsAndEmoticons.get(i - 2), wordsAndEmoticons.get(i - 1), wordsAndEmoticons.get(i));
        final String leftBiGramFromOnePrevious = String.format("%s %s", wordsAndEmoticons.get(i - 2), wordsAndEmoticons.get(i - 1));
        final String leftTriGramFromOnePrevious = String.format("%s %s %s", wordsAndEmoticons.get(i - 3), wordsAndEmoticons.get(i - 2), wordsAndEmoticons.get(i - 1));
        final String leftBiGramFromTwoPrevious = String.format("%s %s", wordsAndEmoticons.get(i - 3), wordsAndEmoticons.get(i - 2));
        final Map<String, Float> boosterDictionary = language.getBoosterDictionary();
        final Map<String, Float> sentimentLadenIdioms = language.getSentimentLadenIdioms();

        List<String> leftGramSequences = new ArrayList<String>() {{
            add(leftBiGramFromCurrent);
            add(leftTriGramFromCurrent);
            add(leftBiGramFromOnePrevious);
            add(leftTriGramFromOnePrevious);
            add(leftBiGramFromTwoPrevious);
        }};

        for (String leftGramSequence : leftGramSequences) {
            if (sentimentLadenIdioms.containsKey(leftGramSequence)) {
                currentValence = sentimentLadenIdioms.get(leftGramSequence);
                break;
            }
        }
        if (wordsAndEmoticons.size() - 1 > i) {
            final String rightBiGramFromCurrent = String.format("%s %s", wordsAndEmoticons.get(i), wordsAndEmoticons.get(i + 1));
            if (sentimentLadenIdioms.containsKey(rightBiGramFromCurrent)) {
                currentValence = sentimentLadenIdioms.get(rightBiGramFromCurrent);
            }
        }
        if (wordsAndEmoticons.size() - 1 > i + 1) {
            final String rightTriGramFromCurrent = String.format("%s %s %s", wordsAndEmoticons.get(i), wordsAndEmoticons.get(i + 1), wordsAndEmoticons.get(i + 2));
            if (sentimentLadenIdioms.containsKey(rightTriGramFromCurrent)) {
                currentValence = sentimentLadenIdioms.get(rightTriGramFromCurrent);
            }
        }
        if (boosterDictionary.containsKey(leftBiGramFromTwoPrevious) || boosterDictionary.containsKey(leftBiGramFromOnePrevious)) {
            currentValence += -0.293f; // TODO review Language and English.DAMPENER_WORD_DECREMENT;
        }
        return currentValence;
    }

    private List<Float> siftSentimentScores(List<Float> currentSentimentState) {
        float positiveSentimentScore = 0.0f;
        float negativeSentimentScore = 0.0f;
        int neutralSentimentCount = 0;
        for (Float valence : currentSentimentState) {
            if (valence > 0.0f) {
                positiveSentimentScore = positiveSentimentScore + valence + 1.0f;
            } else if (valence < 0.0f) {
                negativeSentimentScore = negativeSentimentScore + valence - 1.0f;
            } else {
                neutralSentimentCount += 1;
            }
        }
        return new ArrayList<>(Arrays.asList(
                positiveSentimentScore,
                negativeSentimentScore,
                (float) neutralSentimentCount)
        );
    }

    // TODO hardcoded values (4) to Constant?!
    private Map<String, Float> polarityScores(List<Float> currentSentimentState) {
        if (!currentSentimentState.isEmpty()) {
            float totalValence = 0.0f;
            for (Float valence : currentSentimentState) {
                totalValence += valence;
            }
            float punctuationAmplifier = boostByPunctuation();
            if (totalValence > 0.0f) {
                totalValence += boostByPunctuation();
            } else if (totalValence < 0.0f) {
                totalValence -= boostByPunctuation();
            }
            float compoundPolarity = normalizeScore(totalValence, Constant.NORMALIZE_SCORE_ALPHA_DEFAULT);
            List<Float> siftedScores = siftSentimentScores(currentSentimentState);
            float positiveSentimentScore = siftedScores.get(0);
            float negativeSentimentScore = siftedScores.get(1);
            int neutralSentimentCount = Math.round(siftedScores.get(2));
            if (positiveSentimentScore > Math.abs(negativeSentimentScore)) {
                positiveSentimentScore += punctuationAmplifier;
            } else if (positiveSentimentScore < Math.abs(negativeSentimentScore)) {
                negativeSentimentScore -= punctuationAmplifier;
            }
            float normalizationFactor = positiveSentimentScore
                    + Math.abs(negativeSentimentScore)
                    + neutralSentimentCount;
            final float normalizedPositivePolarity = roundDecimal(Math.abs(positiveSentimentScore / normalizationFactor), 3);
            final float normalizedNegativePolarity = roundDecimal(Math.abs(negativeSentimentScore / normalizationFactor), 3);
            final float normalizedNeutralPolarity = roundDecimal(Math.abs(neutralSentimentCount / normalizationFactor), 3);
            final float normalizedCompoundPolarity = roundDecimal(compoundPolarity, 4);
            return new HashMap<String, Float>() {{
                put("compound", normalizedCompoundPolarity);
                put("positive", normalizedPositivePolarity);
                put("negative", normalizedNegativePolarity);
                put("neutral", normalizedNeutralPolarity);
            }};
        } else {
            return new HashMap<String, Float>() {{
                put("compound", 0.0f);
                put("positive", 0.0f);
                put("negative", 0.0f);
                put("neutral", 0.0f);
            }};
        }
    }

    private float boostByPunctuation() {
        return boostByExclamation() + boostByQuestionMark();
    }

    private float boostByExclamation() {
        int exclamationCount = Properties.countLetter(text, "!");
        return Math.min(exclamationCount, 4) * Constant.EXCLAMATION_BOOST;
    }

    private float boostByQuestionMark() {
        float questionMarkAmplifier = 0.0f;
        int questionMarkCount = Properties.countLetter(text, "?");
        if (questionMarkCount > 1) {
            questionMarkAmplifier =
                    (questionMarkCount <= 3)
                            ? questionMarkCount * Constant.QUESTION_BOOST_COUNT_3
                            : Constant.QUESTION_BOOST;
        }
        return questionMarkAmplifier;
    }

    // TODO hardcoded values (0.5f, 1.5f) to Constant?!
    private List<Float> checkConjunctionBut(List<String> inputTokens, List<Float> currentSentimentState) {

        // TODO English language dependent!
        if (inputTokens.contains("but") || inputTokens.contains("BUT")) {
            int index = inputTokens.indexOf("but");
            if (index == -1) {
                index = inputTokens.indexOf("BUT");
            }

            for (Float valence : currentSentimentState) {
                int currentValenceIndex = currentSentimentState.indexOf(valence);
                if (currentValenceIndex < index) {
                    currentSentimentState.set(currentValenceIndex, valence * 0.5f);
                } else if (currentValenceIndex > index) {
                    currentSentimentState.set(currentValenceIndex, valence * 1.5f);
                }
            }
        }
        return currentSentimentState;
    }

    private boolean hasAtLeast(List<String> tokenList) {

        // TODO English language dependent!
        if (tokenList.contains("least")) {
            int index = tokenList.indexOf("least");
            return index > 0 && tokenList.get(index - 1).equals("at");
        }
        return false;
    }

    private boolean hasContraction(List<String> tokenList) {
        for (String s : tokenList) {

            // TODO English language dependent!
            if (s.endsWith("n't")) {
                return true;
            }
        }
        return false;
    }

    private boolean hasNegativeWord(List<String> tokenList, List<String> newNegWords) {
        for (String newNegWord : newNegWords) {
            if (tokenList.contains(newNegWord)) {
                return true;
            }
        }
        return false;
    }

    private boolean isNegative(List<String> tokenList, List<String> newNegWords) {
        return hasNegativeWord(tokenList, newNegWords)
                || hasAtLeast(tokenList)
                || hasContraction(tokenList);
    }

    private float normalizeScore(float score, float alpha) {
        return (float) (score / Math.sqrt((score * score) + alpha));
    }

    private static float roundDecimal(float currentValue, int roundTo) {
        float n = (float) Math.pow(10.0, (double) roundTo);
        float number = Math.round(currentValue * n);
        return number / n;
    }
}

redpajama_set_name: RedPajamaGithub


text:
namespace content {

// Test app banner service that is registered as a Mojo service for
// BeforeInstallPromptEvents to look up when the test runner is executed.
class AppBannerService : public blink::mojom::AppBannerService {
 public:
  AppBannerService();
  ~AppBannerService() override;

  mojo::Remote<blink::mojom::AppBannerController>& controller() {
    return controller_;
  }
  void ResolvePromise(const std::string& platform);
  void SendBannerPromptRequest(const std::vector<std::string>& platforms,
                               base::OnceCallback<void(bool)> callback);

  // blink::mojom::AppBannerService overrides.
  void DisplayAppBanner() override;

 private:
  void OnBannerPromptReply(base::OnceCallback<void(bool)> callback,
                           blink::mojom::AppBannerPromptReply);

  mojo::Receiver<blink::mojom::AppBannerService> receiver_{this};
  mojo::Remote<blink::mojom::AppBannerEvent> event_;
  mojo::Remote<blink::mojom::AppBannerController> controller_;

  DISALLOW_COPY_AND_ASSIGN(AppBannerService);
};

}  // namespace content

#endif  // CONTENT_SHELL_RENDERER_WEB_TEST_APP_BANNER_SERVICE_H_


text:
Games24News
Hitman: Absolution is Free On GOG Until Sunday And You Will Keep it Forever
Game Box Pass
Hitman: Absolution is Free On GOG Until Sunday
Menudo Summer Sale is giving us GOG these days. And it is that if last week he gave the classic Total Annihilation by Chris Taylor, now it is the turn of Hitman: Absolution, the remarkable return of the famous agent 47 in late 2012.
If we look back, six long years had passed since that Hitman: Blood Money of 2006, although his most remembered return would come in the middle of 2016 through Hitman (yes, dry), marking a new episodic course until that idea was finally discarded (but with DLC) in the subsequent Hitman 2 of 2018.
So watch now this free Hitman: Absolution on GOG in this new promotion of the CD Projekt page that will be active for 72 hours and whose exchange will make us keep it in our library forever, it is a great gift to celebrate yesterday's video of the next Hitman III of January 2021.
source:- techspot
Marvel's Spider-Man: Miles Morales Will Be An Independent Game For PS5
Star Wars: Squadrons Development Leaked From Microsoft Store
Cyberpunk 2077: Xbox Series and PS5 update won't arrive until the end of the year
The launch of Cyberpunk 2077 has been too rough for CD Projekt Red, so much so that the studio yesterday published a video at the last minute in which the heads of the studio gave explanations about what had happened in the days before the game's launch on Xbox One and PlayStation 4.
In this video in question that we already explained to you yesterday in another news item its content, different information was released about what will be coming to the game in the coming months, and among them, it was revealed that the version for Xbox Series X and PlayStation 5 will not arrive until at least the second quarter of 2021, with a date yet to be determined.
Cyberpunk 2077 for Xbox Series X / S and PlayStation 5
We must remember that currently, the versions that run on both Xbox Series X / S and PlayStation 5 are the Xbox One and PlayStation 4 versions respectively. These versions work in a retro compatible way, so they hardly take advantage of the hardware characteristics of both machines.
Before Cyberpunk 2077 was released last December, it was expected that this update for the new consoles could be enjoyed before June 2021, but now all this is subject to patches to solve the problems of the versions of Xbox One and PlayStation 4 and the launch of the planned expansions for the game in 2021.
For more details about the progress being made on Cyberpunk 2077's further development, including information about updates and improvements, free DLCs, and more, please visit https://t.co/vfY3xxCM1G pic.twitter.com/6U28q8pcVH
— Cyberpunk 2077 (@CyberpunkGame) January 13, 2021
Dear gamers,
Below, you'll find CD PROJEKT's co-founder's personal explanation of what the days leading up to the launch of Cyberpunk 2077 looked like, sharing the studio's perspective on what happened with the game on old-generation consoles. pic.twitter.com/XjdCKizewq
Shredders, a new Snowboard video game, will land on Xbox Series
The world of Snowboarding is in luck with our Xbox Series X / S as Shredders will be presented at the end of the current year 2021, a game made by and for fans of this winter sport.
It is not the first time that a Snowboard game has been presented on our Xbox, we already have games like Amped, but it is time to take our boards back and go back to slide and do tricks through the mountains.
Go back to the mountains with Shredders, first on Xbox Series
As the creators say, this is a surfer's game for surfers that is based on the sensations of the aforementioned Amped and its union of simulation and fun but amplified with the new features of the new generation as well as groundbreaking physics. The creators previously announced this game but until now they did not have a release date. Apparently, it will be a game with a temporary exclusivity for our Xbox Series X | S.
It seems that there is still some time for this promising Shredders to reach our consoles, but the truth is that fans of this sport now have one more reason to get an Xbox Series. Stay tuned to Generación Xbox, where we will tell you the news about this and other games that are coming to Microsoft consoles.
You can now play the Zombies mode of Call of Duty Black Ops Cold War for FREE
During this day, all Call of Duty Black Ops Cold War users will receive a new content update completely free of charge that includes new content for multiplayer, as well as a new game mode for the Mode pool. Classic Zombies from Black Ops.
To celebrate the arrival of this new game mode and that even those who do not have the title can enjoy it, from today until next January 21, we will be able to enjoy the Call of Duty Zombies mode totally free Black Ops Cold War and try the new Cranked mode.
Enjoy the zombie mode of Call of Duty Black Ops Cold War for free between January 14 and 21
Today a new content update will arrive at Call of Duty Black Ops Cold War that will include a new game mode for the Zombies mode called Cranked. In this new and frenzied mode, zombies will not be the only threat we will face, but we will also have to fight against time; since if we go too long without having killed any zombies, we will explode.
This new model is already available and promises to greatly increase the frenzy of Zombies games by forcing us to be constantly aware that our counter does not reach zero if we want to survive long enough to the waves of enemies that will try to devour us.
Stay connected to Xbox Generation to be informed of all the news related to the Call of Duty Black Ops Cold War.
MultiMedia6 days ago
Dead Cells Fatal Falls comes to Xbox One on January 26
Space shooter Boundary is revealed in a new trailer
News1 week ago
Epic will give an extra 500 Bucks to all Fortnite Club members
Xbox Series X1 week ago
Star Wars Jedi Fallen Order optimized today for Xbox Series X and S
InXile Entertainment seeks art director for next-gen RPG project
This was left out of Assassin's Creed Valhalla
MultiMedia3 weeks ago
Destiny 2 performs amazingly on Xbox Series X and S
Cyberpunk 2077: 15 days after its launch, its average score on Xbox is 60
Extensive new gameplay from The Medium
Ninja Theory seeks 13 new talents for future projects
The Best PS4 Games From Now Until The Launch of PS5
Division 2 is Renewed This Month With Its Update 10 And The Second Season Of Warlords Of New York
PS47 months ago
How To Get Credits n Star Wars Battlefront II
Season 4 Of Call Of Duty: Modern Warfare And Warzone Has A Date Again And Will Arrive Today
MultiMedia3 months ago
King Arthur: Knight's Tale announced for Xbox Series
Xbox7 months ago
Halo 3: ODST Firefight Will Be Added To The Master Chief Collection This Summer
Bloodstained: Ritual of the Night exceeds one million units and is preparing an update with Boss Revenge mode

redpajama_set_name: RedPajamaCommonCrawl


The judges' votes are in - at long last here are your 10 finalists for 2D & 3D!!
Congratulations to all for making it this far! The FINAL round is next! Stay tuned for the announcement coming soon!
Hey everyone! We're celebrating our 2nd anniversary in a big way - ART WAR is back for its second year!!
What is the ART WAR? It's an international (See eligibility) art competition for 2D & 3D artists where you compete for the title of "ART WAR Champion" and win some incredible prizes. If you thought last year was great, this year's prizes are TWICE as awesome!
On the verge of the year 2018 the forces of LIGHT and DARKNESS have started to clash in an all out ART WAR! Will light shine on victoriously or will darkness engulf everything?
▶ This is WAR - Your champion should be depicted accordingly!
Post your progress over time in your own topic, entries uploaded last minute will not be considered, this is a community-building event!
Use #ARTWAR2 when posting about the contest on social media if you want the chance to get a repost/share from us!
Judging will be based on how well the topic is represented, overall quality and skills displayed as well as the "wow" factor.
Interested in being a sponsor? Contact us here with the subject "Art War 2 Sponsor"
The deadline for ART WAR 2 is on *March 5th 2018 @ 11h59PM PST. Late entries will NOT be considered.
Good luck everyone! Looking forward to be inspired by you all!
With less than 2 months given and the holiday break coming up, I think it's a really optimistic deadline that not a lot of people are gonna be able to make. Any chance an extension might happen?
Must agree. Of these 52 days I'll be lucky to get 10 free. Not sure if others will be in the same boat but I suspect they will.
With over 1000 entries last year there should be plenty of time this year again Most art tests for studios will only give you 2 weeks, and that's without holiday vacation days to help!
Too long I've waited to participate in contests like these, especially here on Cubebrush because sentiments and I won't give up on this opportunity this time. Count me in! May the force be with you guys & gals!
This is amazing! So glad to see another Art War ! Always very inspiring !
Anything goes again? I liked the worlds challenge because it had a bit more narrative thrust to get my teeth into, when given carte blanche like this I get stuck, like a deer in creative headlights.
Any tips on how to make a start?
Best tip would be to pick a side of the war you would like to represent. Dark or Light and come up with a story for your character. That can be one way. Ask yourself some questions?
What is their role in the faction or army or world they belong in?
Are they a ruler or mage or warrior?
What are sub genres you would like to add? Fantasy? Scifi? Steampunk?
Add these different kind of elements and make the contest into your own kind of mini project. You are the director, world builder and art director of the project. Having a story to work with can be as fun as coming up with the components yourself. Just try to have fun with it. Hopefully this helps.
If you need more help, just go with the darkside as that is the best side Team Darkness is the best. All jokes aside I look forward to what you can come up with.
Can't wait to see all what we can come up with !
The last ART WAR was really super fun.
And that's really good advices @Malcom !
@marc - Curious if the Oculus Rift is for 2D and 3D winners ?
Anyways I won't put my hope too high haha.
If at least I could finish this time (was really ashamed I couldn't to be honest); but I'm really hype for this !
See you on the (art) battlefield everyone.
Been looking forward to doing this again. It's fun checking out everyone's progress as they make something truly awesome!
quick question, can the final piece be bigger than 2048 pixels? or does at least one of the sides have to be specifically that size? First time entering so I want to make sure it's right.
@art4life Hi! Yes, the final piece can be bigger than 2048 pixels.
So 2048x2048, 3000x2048, 3000x4000 are all good sizes.
Just know, that if your file size is too big, the forum can resize your picture. Always check that your upload is the size you wanted.
The theme is even more open than last year. Which is why I have a few questions.
It says in the FAQ that we cant combine fantasy and sci-fi. I assume that is for the last challenge and this year we cant combine light and dark?
In the Rules it says that the champion can be "almost anything". What would be something that cant be used? For example: I create a robot and justify the entry by saying that the creature is the light inside the robot -> an elemental and the robot is just the armor. Would that work?
For the 3D Submissions. How will they be judged? Will a high poly model be judged by the same criteria as a game ready model? What version is preferred as a final model?


Special & limited edition Alabama Football Pet Jersey celebrating 16 National Championships. Support the NCAA and your dog with this Officially Licensed NCAA pet Jersey. Deck out your pup in licensed sports apparel from Hot Dog Collars!


Sterling, VA—June 20, 2011—JK Moving Services, a full-service moving company founded in 1981 and specializing in residential, commercial and international moving and storage, is pleased to announce new leadership in its Archive Services Group with the hiring of Jon Theiss as General Manager and Mike Faber as Vice President, Sales. As the new GM, Mr. Theiss will lead the company's Archive Services Group and its services targeted for commercial clients during a time when the company is in an aggressive growth mode. Reporting to Mr. Theiss will be Mr. Faber, who will oversee the group's commercial client sales and marketing.
The company recently announced a planned 100,000 square foot expansion to its already extensive Loudoun County campus, encompassing 400,000 square feet across four buildings. In addition, it will be adding 130 new employees to its current base of 550.
Mr. Theiss has over 18 years of experience managing service, warehouse and administrative efforts in the moving, storage and records management industries. His notable previous experience includes Director of Warehousing for The Kane Company and Director of Operations at Office Archives. As General Manager, Mr. Theiss will be responsible for all aspects of the Archive Services Group's profit and performance.
Mr. Faber brings over 25 years of experience to JK Moving Services including five years with TAB Products Company and over 20 years as Vice President of Paxton Record Retention, a company he helped establish in 1988. Mr. Faber has been a Certified Records Manager since 1995 and is active in a number of professional organizations. Mr. Faber will be responsible for sales and marketing for the Archives Services Group, including business development and growth, and representation within industry groups.


text:
Q: How to find and copy file containing today's date in filename, the easiest way (e.g. cmd.exe) I have one folder with 365 files named
01-01.mp3
02-01.mp3
...
25-08.mp3
and so on and I want to copy a file of "today's date" into another folder. Can I do it in Windows Task Scheduler via cmd.exe somehow?
Thank you for your help!

A: @echo off
for /f %%x in ('wmic path win32_localtime get /format:list ^| findstr "="') do set %%x
set today=%Day%-%Month%

copy "PATH\TO\FOLDER\%today%.mp3" "PATH\TO\SAVE\FILE\example.mp3"

Save the file as .bat

redpajama_set_name: RedPajamaStackExchange


text:
Q: Issue with Mikrotik allowing outside access to DVR I am pulling my hair out. Here is the situation:
My Public Internet IP (71.89.xx.xxx)-> Cable Modem (192.168.0.10) Mikrotik router (192.168.0.1) -> DVR cam (192.168.0.106)
I have the following Filter rule:

And the following NAT rule:

My DVR requires port 2050. Puttig any value in the Dst. Port (either 2050, or 1-10000 range in this case does not work). No matter what I do, I cannot access the camera feed from outside my network. Can someone please help? I have read every tutorial and every youtube video I can with zero luck.

A: Solved.
I was able to figure it out....must allow outside traffic to the Mikrotik on port 9000 as well.


If you can walk into a scene and set your hand down on a bar with any amount of skill you've already created a world that the audience can see. If you can stare out a window longingly while pressing your hand against it you don't even need to speak for the audience to feel the emotion. All it takes is practice.
Call yourself out on it. If you are holding something in a scene and you forget and are using both hands to do something else call yourself out once you're done. "Oops I dropped my briefcase." You will break the suspension of disbelief and it will take the audience out of the moment and your teammates don't like it which are all the reasons you won't make that mistake next time. Well maybe eventually you won't make that mistake. Publicly shame yourself. Plus if you call yourself out on dropping things at least it's a interesting character trait.
If you don't look like you are enjoying the show on the sidelines than why should anyone who paid to be here enjoy it? Laugh a little. You might think it's distracting but Jimmy Fallon did it all through the early 2000's and NBC gave him a hour to do it every night on TV!
Don't sweep edit. Just start a new scene by walking to the front of the stage while talking after a laugh line from the previous scene. Sweep edits are weird and the only people who know what they mean are standing on stage with you or sitting in the back hoping the lights get pulled soon so they can perform and go home early.
If you force yourself to start a new scene by taking attention from the old scene you force yourself to start with a line. Start talking as soon as you timidly come off that wall and by the time you are at the front of the stage the performers behind you will have left that person on your team who doesn't like to start scenes will have already come out to join you.
You don't need to sweep.


A global marketing agency who provide their B2B clients with state-of-the-art innovative marketing strategies to best engage their customers worldwide. Executing their digital marketing strategies across 80+ countries globally, their marketing solutions including web production, social media marketing and mobile application development have helped this global marketing agency to shape the dynamic and evolving world of digital marketing.
A focus on the production of email and web content through methods such as building landing pages enables this digital marketing agency to optimise their creative and strategic marketing solutions.
As a Web Production Manager, you will have an exciting opportunity to develop both your technical and client servicing skills in an established B2B marketing environment. You will be responsible for working on the production of email and web content for one client - a multinational financial management software company.
You are a fast learning, flexible individual with a keen eye for detail who works well under pressure. Using your excellent communication and organisational skills to meet client requirements efficiently, you will thrive in this career-advancing opportunity.
The Web Production Manager receives a highly competitive salary paying from £28,000 to £30,000 depending on experience and excellent company benefits.


Based in Worksop, North Nottinghamshire, Anderson & Company is a firm of chartered, certified accountants, registered auditors and business advisers, helping businesses throughout Sheffield, Chesterfield and the surrounding areas achieve their business goals.
Graeme Richardson FCCA, the Principal of the firm, has over 30 years' experience in supplying clients with expert accounting and taxation advice. Graeme acts as the main point of contact at the firm, and allocates each client their own specialist to help them with any issues they may have. This may include a referral to a specialist partner.
We pride ourselves on providing personalised accounting services, getting to know you and your business. Our team work hard to understand your goals and objectives to help move your business in the right direction, offering services, advice and support of the highest standard, at competitive rates.


Buying a Home in South Florida May Be Cheaper than Renting | Ace Mortgage Loan Corp.
This entry was posted in home loan, mortgage, mortgage broker, mortgage loan, Mortgages, Palm beach county, palm beach county mortgage. Bookmark the permalink.


text:
one of a group of viruses that cause some forms of the common cold and other illnesses such as SARS
The noun coronavirus was first used in print in 1968 in a description in the journal 'Nature' of this class of previously unrecognized viruses. They get their name from their resemblance to the sun's corona when viewed in an electron microscope. Corona comes from a Latin word that means 'crown'.
Coronaviruses are a group of viruses that cause illness in humans and animals, whose seriousness ranges from that of the common cold to potentially deadly versions such as SARS, MERS and the new virus that is causing alarm around the world. The WHO has named the disease caused by the new form of the virus COVID-19 but the more familiar – if less accurate – term coronavirus is still being widely used. This is reflected in the numbers returned by an online search carried out this week: while coronavirus returns 2.5 billion hits, COVID-19 stands at under 300,000,000, although this figure will undoubtedly rise. While coronavirus, originally submitted to the crowdsourced Open Dictionary in 2013, has since been promoted to full entry status in Macmillan Dictionary, only time will tell whether COVID-19 warrants a similar promotion.
"MERS is a respiratory disease caused by a coronavirus that was first identified in Saudi Arabia in 2012."
(enTenTen15 corpus)
"Human coronaviruses may cause the common cold or severe respiratory illness."
bacteria, microorganism, retrovirus, virus


Happy Reminders: Color Burst is King!
I am back again on Day 5 of the Ken Oliver Crafts and StencilGirl Hop.
I have something a little different this time.
to space some nice sized circles for color swatches.
I am involved in Mary Ann Moss' online Sketchbookery Class this year.
I decided to add them into my Sketchbookery line up.
It was time to play with colors.
into one pile.....then added a bit of water...and the center color is what I got.
But then I kind of knew I would get a gray or brown if I mixed all the colors together.
And then I drew my little bottles.
They are colorful little soldiers standing tall.
I used a black and a gray Sharpie Marker to add details.
But all that shading and coloring is Ken's Color Burst Paints.
The Violet powder is so intense it almost looks black all by itself.
I had tried to pour equal amounts of each color out onto the paint pallet.
Note to self: use less violet!
This was a lot of fun and I look forward to a lot more experimentation.
Since today is the last day of the Hop I am sure it will be soon!
We hope you have enjoyed these 5 days of great projects!
Love your use of the stencil and the paints! Great techniques!
Beautiful color combinations and great mixing!!!
Your techniques are amazing. I love this. You have so much talent, love seeing your projects.
thanks for the offer to win the gift certificate. it looks like sketchbookery is a good class to take.
A great idea to create your own color chart for future reference! Love these gorgeous colors.
What a great project that you can refer to time and again! I have really gotten so much inspiration this week!
Thank You for all of your great tips.
Love the "go to" idea for the swatch pages. With so many paints, inks, etc. it is hard to remember what the exact colors are for them. Less time on testing and more on creating!
Can't wait to get my hands on those Colorburst!
I need to get some stencils and color burst!
A great way to get a color wheel, get to try different techniques, and end with a notebook for future reference.
thanks for a wonderful week of ideas.
I love this idea! THose colors are just wonderful!
Neat idea for a journal page and color wheel theme!!
Love what you did with the paints. Great info.
Great idea with using the Color Burst as "models". Wonderful!
I love this page. Your little soldiers are so cute.
Beautifully showcases the colours. They are so vibrant and alive.
Amazing! Just love all those colors! Thanks for the chance to win!!
WOW! What a fun design! love love love how all the colors look in your design!
Cool idea, a perfect "paint" palette! You sure can draw...those bottles you drew are perfect! Thanks so much for sharing your ideas. It's been a great blog hop!
Great technique - love the salt! Thanks for sharing!
Fabulous colors!!! Love the idea and your drawing!!!
Great color wheel idea. Keep the violet dark so you can remember how dark it is.
What a great idea! ANd it worked so well with the stencil! This will be awesome to go back to.
Great idea to make a color burst color wheel! Love this.
Love this! Bursts are ordered. Cannot wait to play! Great work!
Color Burst rocks! Thanks for sharing your great art!
This was a great demo. Very thorough and very eye catching! Thanks!
Beautiful pages! Love your art and those vibrant colors!!
Thanks for the chance to win. Can't wait to try Color Bursts.
I do this something very similar with any new supplies - color swatch them on the type of paper I use. It's really cool that you can get a "payne's gray" if you mix all the colors together.
So cool! I love seeing the work of talented artists like you!
Oh this is cool. and the salt made them look so crazy cool. Love this.
Too many things to try from all of the artists. Where to start - all inspirational.
Technique records and swatches are SO helpful when you use multiple types of media. Great idea.
Nice sketches of the bottles!
Fun - I'm going to have to try using salt next time I play with Color Burst.
Very cool . Love the salt effects and the drawings of the color burst bottles look great. Well done.
What a fun and beautiful page! I love your drawing of the bottles, and the color chart is a great idea!
Very cute idea for a palette on palettes! Need to try the salt tchnique.


text:
Зитцендорф () — коммуна в Германии, в земле Тюрингия.

Входит в состав района Заальфельд-Рудольштадт. Подчиняется управлению Миттлерес Шварцаталь. Население составляет 890 человек (на 31 декабря 2010 года). Занимает площадь 2,52 км². Официальный код — 16 0 73 084.

Примечания

Ссылки
 Официальная страница

Города Тюрингии

redpajama_set_name: RedPajamaWikipedia


The high court has declined to quash the preliminary inquiry ordered by Vigilance Court against former Kerala Vigilance Director Shankar Reddy in bar bribery case.
The Kerala High Court has recently held that where allegations are leveled against a senior superior police officer, the complainant, who is an ordinary citizen, being a member of the public cannot be compelled to file the complaint before the police themselves.
Justice Kemal Pasha was hearing a petition filed by former Kerala Vigilance Director Shankar Reddy challenging the order of Vigilance Court, by which it has ordered a preliminary inquiry against him for allegedly compelling the investigating officer in bar bribery case to file a report in favour of former finance minister KM Mani.
The court has declined to quash the order of Vigilance Court.
Taking a cue from the Supreme Court judgment in Priyanka Srivastava v. State of U.P. and others, Advocate C. Unnikrishnan, who appeared for Mr. Reddy, argued that the complainant ought to have approached the police first under Section 154(1) or Section 154(3) CrPC, before approaching the Magistrate with a complaint.
But the court observed that this is a case wherein allegations are leveled against a senior superior police officer.
The court also said that, even as per Rule 26 of the Criminal Rules of Practice (Kerala), a complaint against a police officer shall not be referred to by a Magistrate under Section 202 CrPC to any person other than a Magistrate subordinate to him.
Can a Magistrate summon the Case Diary of another Case for ordering a Preliminary Inquiry?
It was also argued that the Vigilance Court had bypassed the contours of all legal provisions by ordering such a preliminary inquiry, after applying his mind to the facts of the case and also in applying his mind on the contents of the case diary of another case. It is argued that the Vigilance Court ought not have called for the case diary in another case and perused it for the purpose of satisfying himself with regard to the correctness of the allegations in the complaint.
But the high court observed that there was nothing wrong on the part of the court below in calling for such a document for its perusal to satisfy itself whether such allegations could be leveled against the petitioner or not.
Can a Magistrate order Preliminary Inquiry?
"True that in Lalita Kumari , the Apex Court was dealing with complaints being filed regarding corruption cases directly before the police. At the same time, the aforesaid mandate contained in Lalita Kumari (Supra) clearly covers a situation of the present kind also. If the information contained in the complaint does not disclose a cognizable offence; but indicates the necessity for an inquiry, a preliminary inquiry may be conducted only to ascertain whether a cognizable offence is disclosed or not. Here, in this particular case, serious allegations have been raised against a senior superior police officer. In such case, the court below was very vigilant in not ordering an investigation under Section 156(3) Cr.P.C. After perusing the case diary, the court below had ordered a preliminary inquiry as per the mandates in Lalita Kumari in order to ascertain whether a cognizable offence is disclosed or not in the complaint".